تغییر بزرگی و کوچکی حروف یک رشته

می‌توان بزرگي و کوچکي حروف يک رشته را تغيير داد. به عنوان مثال يک رشته که متشکل از حروف کوچک است را می‌توان به حروف بزرگ تبديل کرد. با استفاده از متدهاي ()upcase و ()downcase می‌توان حروف رشته را بزرگ يا کوچک کرد.

lowercase = "abc"
uppercase = "ABC"

puts "lowercase.upper() = #{lowercase.upcase}"
puts "uppercase.lower() = #{uppercase.downcase}"
lowercase.upper() = ABC
uppercase.lower() = abc

به اين نکته توجه کنيد که اگر بخواهيم يک رشته به عنوان مثال يک جمله که از حروف بزرگ و کوچک تشکيل شده است، مثلاً حرف اول هر کلمه بزرگ و بقيه حروف کوچک نوشته شده باشند را با استفاده از متد ()upcase تغيير دهيم فقط حروف کوچک آن تغيير کرده و بزرگ می‌شوند و حروفي که از قبل بزرگ بوده‌اند تغيير نمی‌کنند. اين نکته در مورد متد ()downcase نيز صدق می‌کند. حال بياييد يک متدي ايجاد کنيم که حرف اول کلمات هر رشته‌ای که به آن ارسال می‌شود را به صورت بزرگ و بقيه را به صورت کوچک تبديل کند. در اين برنامه از متدهاي دستکاري رشته که تا به حال ياد گرفته‌ایم، استفاده شده است.

 1: def toTitleCase(string)
 2:     words = string.split(" ")
 3: 
 4:     for i in 0..words.length - 1
 5:       firstLetter = words[i][0]
 6:       rest        = words[i][1..-1]
 7:       result      = firstLetter.upcase + rest.downcase
 8:       words[i]    = result
 9:     end
10: 
11:     return words.join(" ")
12: end
13: 
14: puts "Enter a string: "
15: input = gets
16: 
17: puts "Converting to Title Case..."
18: 
19: input = toTitleCase(input)
20: 
21: puts input
Enter a string:
tHe quICK bROwN fOx
Converting to Title Case...
The Quick Brown Fox

در مثال بالا يک متد به نام toTitleCase ايجاد کرده‌ایم که یک آرگومان قبول می‌کند. ابتدا با استفاده از متد ()split رشته را به کلمات تشکيل دهنده‌اش تقسيم بندي می کنیم. این متد یک رشته را به یک آرایه از کلمات تبدیل می کند. (خط 2). بنابراين می‌توان هر کلمه را به صورت جداگانه دستکاري کرد. سپس با استفاده از يک حلقه for در ميان کلمات گردش می‌کنیم. اولين حرف هر کلمه را با استفاده از words[i][0] استخراج و در يک متغير براي استفاده‌های بعدي ذخيره می‌کنیم (خط 5). باقيمانده حروف کلمه را هم با words[i][1..-1] استخراج می‌کنیم (خط 6). حال رشته‌ها را با هم ترکيب می‌کنیم البته از متد ()upcase براي بزرگ کردن حروف اول و از متد ()downcase براي بزرگ کردن بقيه حروف کلمات استفاده می‌کنیم (خط 7). بعد از اين کار عناصر آرايه را با کلمات اصلاح شده جايگزين می‌کنیم (خط 8). حال کلمات اصلاح شده را با متد ()join ترکيب کرده و در بين آنها فضاي خالي قرار می‌دهیم (خط 11). سپس آنها را به متد فراخوان برگشت می‌دهیم. به این نکته توجه کنید که متد toTitleCase را ما جهت بزرگ کردن حرف اول یک رشته نوشته ایم، در حالی که متدی در Ruby به صورت توکار به نام capitalize وجود دارد که همین کار را برای ما انجام می دهد. شما می توانید به جای خطوط 8-5 کد بالا، کد زیر را بنویسید:

words[i]    = words[i].capitalize