رشته‌ها در روبی

تعریف رشته، ایندکس‌گذاری، برش (slicing) و ویژگی‌های رشته‌ها در روبی

رشته چیست؟

رشته (String) دنباله‌ای از کاراکترها است که برای ذخیره متن استفاده می‌شود. در روبی رشته با علامت نقل‌قول مشخص می‌شود.

تعریف رشته

می‌توانید رشته را با تک یا دو نقل‌قول تعریف کنید:

# تک نقل‌قول
s1 = 'سلام'

# دو نقل‌قول
s2 = "دنیا"

تفاوت مهم: interpolation

فقط رشته‌های با دو نقل‌قول از interpolation پشتیبانی می‌کنند:

name = "علی"
puts "سلام #{name}"   # => سلام علی
puts 'سلام #{name}'   # => سلام #{name} (بدون جایگزینی!)

رشته چند خطی (Heredoc)

text = <<~TEXT
  این یک
  رشته چند خطی
  است
TEXT
puts text

طول رشته

با متد .length یا .size طول رشته را می‌گیرید:

name = "Ruby"
puts name.length  # => 4
puts name.size    # => 4

رشته به‌عنوان دنباله

رشته یک دنباله از کاراکترهاست. هر کاراکتر یک ایندکس (شماره) دارد که از صفر شروع می‌شود:

     R   u   b   y
     0   1   2   3    ← ایندکس مثبت
    -4  -3  -2  -1    ← ایندکس منفی

دسترسی به کاراکترها

s = "Ruby"

puts s[0]    # => R (اولین کاراکتر)
puts s[1]    # => u
puts s[-1]   # => y (آخرین کاراکتر)
puts s[-2]   # => b

برش رشته (Slicing)

می‌توانید بخشی از رشته را با سینتکس [start, length] یا [start..end] ببرید:

s = "Ruby Programming"

puts s[0, 4]     # => "Ruby" (از ۰، به طول ۴)
puts s[0..3]     # => "Ruby" (از ۰ تا ۳)
puts s[5..]      # => "Programming" (از ۵ تا انتها)
puts s[..3]      # => "Ruby" (از ابتدا تا ۳)
puts s[-11..]    # => "Programming" (از ۱۱ تا انتها)
روبی از دو نوع range پشتیبانی می‌کند: .. (شامل انتها) و ... (بدون انتها).

رشته‌ها تغییرپذیرند!

برخلاف پایتون، در روبی می‌توانید رشته را مستقیماً تغییر دهید:

s = "Ruby"
s[0] = "D"
puts s  # => "Duby"

الحاق رشته‌ها

با عملگر + یا << رشته‌ها را به هم بچسبانید:

first = "علی"
last = "رضایی"

# با +
full = first + " " + last
puts full  # => علی رضایی

# با <<
first << " " << last
puts first  # => علی رضایی

تکرار رشته

با عملگر * رشته را تکرار کنید:

puts "آ" * 5      # => آآآآآ
puts "=" * 30    # => ==============================

بررسی عضویت

با include? می‌توانید بررسی کنید آیا یک زیررشته در رشته وجود دارد:

s = "به روبی خوش آمدید"
puts s.include?("روبی")    # => true
puts s.include?("پایتون")  # => false

پیمایش رشته

# با each_char
"Ruby".each_char { |c| puts c }

# با split و each
"Ruby".split("").each { |c| puts c }

کاراکترهای فرار

کدمعنی
\nخط جدید
\tتب
\\بک‌اسلش
\'تک نقل‌قول
\"دو نقل‌قول

خلاصه

عملیاتسینتکس
طولs.length
دسترسیs[i]
برشs[start, len] یا s[start..end]
الحاقs1 + s2
تکرارs * n
عضویتs.include?(x)
interpolation"#{expr}"

این مبحث بخشی از دوره آموزش کامل روبی است.

ابزارهای مرتبط