今日も学んだことを忘れないためにメモします
downcaseメソッド とは
文字列に含まれる大文字を小文字に変換したいときに使用するメソッド。
array = "Hiabc"
puts array.downcase
=> "hiabc"
他にも
・文字列に含まれる小文字を大文字に変換するupcaseメソッド
・文字列に含まれる小文字を大文字に、大文字を小文字に変換するswapcaseメソッド
・先頭の小文字を大文字に,他の文字を小文字にするcapitalizeメソッド
がある
lengthメソッドとは
「文字列の長さ(文字の数)」と「配列の要素の数」を 調べるためのメソッド。
str = "abcdefg"
puts str.length
=> 7
data = [1,2,3,4,5,6,7,8,9]
puts data.length
=> 9
プログラム内容
・引数に指定された2つの文字列のうち、どちらかがもう一方の文字列の末尾にある場合は、Trueを出力する
・上記を満たせていない場合は、Falseを出力する
・入力された文字が大文字でも小文字でも、同一の文字として処理を行う
記述内容
def end_other(a, b)
a_down = a.downcase
b_down = b.downcase
a_len = a_down.length
b_len = b_down.length
if b_down.slice(-(a_len)..- 1) == a_down || a_down.slice(-(b_len)..- 1) == b_down
puts "True"
else
puts "False"
end
end
end_other('Hiabc', 'abc')
end_other('abc', 'HaIoBc')
=> "True"
=> "False"
入力された文字が大文字でも小文字でも、同一の文字として処理をする条件のため、downcaseメソッドを使って文字列内の大文字を小文字に変換し、変数に代入する。
lengthメソッドを使って文字列の数を確認して、変数に代入する。(文字列がもう一方の文字列の最後にある場合を区別するために使う)
次にどちらかの文字列がもう一方の文字列の最後にある場合を区別するための処理を書く。
sliceメソッドを使って範囲を指定した文字列を切り取る。
指定する範囲はslice(-(a_len)..- 1)と記述することで末尾(-1で後ろから一番目)からlengthメソッドで文字列の数を確認した分の数。
end_other('Hiabc', 'abc')でメソッドを呼び出した場合はそれぞれ
a_down = hiabc
b_down = abc
a_len = 5
b_len = 3
となる。
条件式の左辺ではb_down.slice(-(a_len)..- 1)は、b_down.slice(-5..-1)となる。
b_down = abcとなっているので文字数が足らず、インデックス番号-5から-1という条件で切り取ることができなくなり、結果はfalseになる。
条件式の右辺ではa_down.slice(-(b_len)..- 1)はa_down.slice(-3..-1)となる。
a_down = hiabcとなるので、インデックス番号-3から-1という条件で切り取ることが出来る。
sliceメソッドでa_downから-3から-1の範囲の文字列を切り取るとabcが残る。
結果、abc == b_downは等しいと評価されるので、trueとなり"True"が出力される。
以上になります。