Satr (String) — matn ma’lumotlarini saqlaydigan klass. Ruby’da satrning muhim xususiyati bor: u o’zgaruvchan (mutable) — ko’plab boshqa tillardagi (masalan, Python’dagi) satrlardan farqli o’laroq, mavjud satrni joyida o’zgartirish mumkin.
String — belgilar ketma-ketligini ifodalovchi klass. Bitta yoki qo’sh tirnoq bilan yoziladi, lekin ular bir xil emas: qo’sh tirnoq interpolyatsiya va maxsus belgilarni qo’llab-quvvatlaydi, bitta tirnoq esa matnni xom holicha oladi.
Bitta va qo’sh tirnoq farqi
Qo’sh tirnoq ichida #{} orqali o’zgaruvchi qiymatini joylashtirish (interpolyatsiya) mumkin, bitta tirnoqda esa bu ishlamaydi:
ism = "Master Sherkulov"
puts "Salom, #{ism}!"
puts 'Salom, #{ism}!'
Salom, Master Sherkulov!
Salom, #{ism}!
Qo’sh tirnoqdagi #{ism} o’zgaruvchining qiymati bilan almashtirildi. Bitta tirnoqda esa #{ism} harfma-harf, xom matn sifatida chiqdi — chunki bitta tirnoq interpolyatsiyani tushunmaydi.
Satrlarni birlashtirish
Satrlarni birlashtirishning bir necha usuli bor — ular natijasi bir xil bo’lsa ham, xotirada boshqacha ishlaydi:
ism = "Farrux"
familiya = "Sherkulov"
puts ism + " " + familiya
puts "#{ism} #{familiya}"
Farrux Sherkulov
Farrux Sherkulov
+ operatori ikkita satrdan yangi satr yaratadi. Interpolyatsiya (#{}) esa odatda o’qilishi osonroq va uzun matnlarda tezroq ishlaydi, chunki oraliq obyektlar kamroq yaratiladi.
O’zgaruvchanlik (mutability)
Ruby satrini, massiv kabi, joyida — yangi obyekt yaratmasdan — o’zgartirish mumkin:
xabar = "Salom"
asl_id = xabar.object_id
xabar << ", UzbekDevs!"
puts xabar
puts xabar.object_id == asl_id
Salom, UzbekDevs!
true
<< (shovel operatori) satrni joyida o’zgartiradi — object_id (obyektning xotiradagi noyob identifikatori) o’zgarmay qoladi, chunki yangi obyekt yaratilmadi, mavjudi kengaytirildi. Agar o’rniga xabar = xabar + ", UzbekDevs!" yozilganda, natija bir xil ko’rinsa-da, object_id o’zgargan bo’lardi — chunki + yangi obyekt yaratadi. << katta matnlar bilan ishlashda shu sabab samaraliroq.
Foydali satr metodlari
Satrlar ustida eng ko’p ishlatiladigan metodlarni ko’ramiz:
| Metod | Vazifasi | Misol |
|---|---|---|
.length |
uzunligi | "Ruby".length → 4 |
.upcase |
katta harflarga | "ruby".upcase → "RUBY" |
.reverse |
teskarisiga | "abc".reverse → "cba" |
.include? |
tarkibida bormi | "Ruby".include?("ub") → true |
.split |
bo’laklarga ajratish | "a,b,c".split(",") → ["a","b","c"] |
sarlavha = "uzbekdevs"
puts sarlavha.capitalize
puts sarlavha.length
puts sarlavha.include?("dev")
Uzbekdevs
9
true
capitalize — faqat birinchi harfni katta qiladi, qolganini kichik. Bu metodlarning barchasi yangi satr qaytaradi, asl sarlavha o’zgarmaydi — faqat <<, upcase!, gsub! kabi undov (!) belgili metodlar obyektni joyida o’zgartiradi.