جا دادن یک رشته در داخل رشته دیگر

Ruby به شما اجازه می‌دهد که یک رشته را در داخل رشته دیگر قرار دهید. به عنوان مثال اگر رشته‌ای مانند !Hello World داشته باشید می‌توانید کلمه Happy را در وسط آن قرار دهید و رشته جدیدی مانند !Hello Happy World ایجاد کنید. به کد زیر توجه کنید:

str1 = "Hello World!"
str2 = "Happy "
index = str1.index("World!")
result = str1[0...index] + str2 + str1[index..-1]

print result
Hello Happy World!

در کد بالا ابتدا اندیس وقوع کلمه World را اب استفاده از متد ()find پیدا می کنیم. عبارت str1[0…index] در اصل معادل str1[0…6] است، یعنی تمام کاراکترهای قبل از کلمه World. عبارت str1[index..-1] هم در اصل همان کلمه World می باشد. بین این دو عبارت هم که str2 را نوشته ایم که کلمه happy است. اندیس اولین کاراکتر یک رشته با صفر و اندیس آخرین کاراکتر یک رشته با یک واحد کمتر از طول رشته نمایش داده می‌شود. در رشته !Hello World می‌خواهیم رشته جدید را درست بعد از اولین فضای خالی یعنی جایی که حرف W قرار دارد جای دهیم. به کادر زیر توجه کنید :

H  e  l  l  o     W  o  r  l  d   !
0  1  2  3  4  5  6  7  8  9  10  11

اگر توجه کرده باشید رشته Happy در این مکان (بعد از اولین فضای خالی) قرار گرفته است. و هر چیز بعد از آن به جلو رانده و رشته !Hello Happy World ایجاد می‌شود.

اضافه کردن کاراکتر به سمت چپ یا راست یک رشته با استفاده از rjust و ljust

با استفاده از متدهای ljust و rjust می‌توان کاراکتر یا فضاهای خالی را به سمت چپ یا راست رشته‌ها اضافه کرد. به عنوان مثال اگر بخواهید یک سری فضا را به سمت چپ رشته جهت ترازبندی آن اضافه کنید می‌توانید از متد rjust استفاده کنید :

str1 = "Example"
str1 = str1.rjust(10)

print str1
   Example

متدهای rjust و ljust آرگومانی را قبول می‌کنند که تعداد کاراکترها یا فضاهای خالی وارد شده را تشخیص می‌دهد. همانطور که در مثال بالا مشاهده کردید عدد 10 ارسال شده باعث ایجاد 3 فضای خالی در سمت چپ رشته می‌شود. برای به دست آوردن مقدار این فضاها یا کاراکترهایی که در سمت چپ یا راست یک رشته قرار می‌گیرند می‌توان از فرمول (تعداد کاراکتر یا فضای خالی – طول رشته) استفاده کرد.
مثلاً در مثال بالا طول رشته Example برابر 7 می‌باشد و زمانی که ما عدد 10 را به عنوان آرگومان ارسال می‌کنیم با استفاده از فرمول 3 = 7 – 10 می‌توان فهمید که چند فضای خالی در سمت چپ رشته قرار می‌گیرد (3 فضای خالی). اگر مقدار آرگومانی که به متد rjust ارسال می‌شود از طول رشته کمتر باشد هیچ تاثیری بر رشته نهایی ندارد. عمل ljust نیز شبیه به rjust است.

str1 = "Example"
str1 = str1.ljust(10)

print(str1 + '|')
Example   |

همانطور که در مثال بالا مشاهده می‌کنید ما عدد 10 را به متد ljust ارسال کرده ایم که باعث می شود سه کاراکتر به سمت راست رشته اضافه شود. برای نمایش این تغییر هم کاراکتر “|” را به سمت راست رشته اضافه کرده‌ایم. یکی دیگر از نسخه‌های این دو متد آرگومان دومی را هم قبول می‌کند که کاراکتر دلخواهی است که به سمت راست یا چپ رشته اضافه می‌شود. به مثال زیر توجه کنید :

str1 = "Example"
str1 = str1.rjust(10, '*')

print(str1)
***Example

استفاده از متدهای بالا زمانی مفید است که خروجی داده‌ها به صورت جدول باشد. به مثال زیر توجه کنید :

 1: data = [
 2:     [ "Name", "Gender", "Age" ],
 3:     [ "John", "Male"  , "21"  ],
 4:     [ "Mark", "Male"  , "18"  ],
 5:     [ "Jean", "Female", "18"  ]
 6: ]
 7: 
 8: for i in 0...data.length
 9:   for j in 0...data[i].length
10:     print(data[i][j].ljust(10))
11:   end
12:   puts
13: end
Name      Gender    Age
John      Male      21
Mark      Male      18
Jean      Female    18

در مثال بالا از لیستی از لیست ها برای ذخیره داده‌هایمان استفاده کرده‌ایم. اولین ردیف عناوین و ردیف‌های دیگر دادها هستند.