رشتهها در روبی
تعریف رشته، ایندکسگذاری، برش (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}" |
این مبحث بخشی از دوره آموزش کامل روبی است.