概要
Railsチュートリアルで downcase メソッドを使用しました。使う機会が今までなかったので、今回問題を解きながら理解を深めたいと思います。関連メソッドについても簡単に見ていきたいと思います。
目次
-
関連メソッド
-
下記問題で使用するメソッド
- start_with?
- end_with?
-
実践
- 問題
- 解答
- 別解
-
まとめ
-
参考文献
関連メソッド
メソッド | 使い方 |
---|---|
downcase | 大文字を小文字に変換 |
upcase | 小文字を大文字に変換 |
swapcase | 大文字を小文字に、小文字を大文字に変換 |
capitalize | 先頭の小文字を大文字に変換 |
破壊的メソッド(!) | 上記のメソッドの末尾に ( ! ) を付与するとオブジェクトに変更を加える |
下記問題で使用するメソッド
start_with?
指定の文字列で始まっているか調べるメソッド
end_with?
指定の文字列で終わっているか調べるメソッド
実践
問題
任意の2つの文字列があります。文字列同士を比べ、文字列の最後にもう一方の文字列が含まれているか確認するプログラムを書いてください。
解答
小文字と大文字で区別を付けたくないので downcase
を使用しています。upcase
メソッドを使いすべて大文字にしても問題なく動作します。
def end_other(a, b)
# 小文字に変換し変数に格納
a_down = a.downcase
b_down = b.downcase
# aの文字列の中にbの文字列は入ってる? または、 bの文字列の中にaの文字列は入ってる?
if a_down.end_with?(b_down) || b_down.end_with?(a_down)
p 'True'
else
p 'False'
end
end
# メソッド呼び出し
end_other('Apple', 'Ple')
end_other('orange', 'Range')
end_other('banana', 'Nana')
別解
slice
を使用することで引数で指定した箇所を切り取っています。
sliceについてはこちらを参考にしていただければ幸いです。
def end_other(a, b)
# 小文字に変換し変数に格納
a_down = a.downcase
b_down = b.downcase
# 文字列の長さを取得
a_len = a_down.length
b_len = b_down.length
# bの文字列からaの文字列分の文字を切り取り、aの文字列と等しい? または、 aの文字列からbの文字列分の文字を切り取り、aの文字列と等しい?
if b_down.slice(-(a_len)..-1) == a_down || a_down.slice(-(b_len)..-1) == b_down
p 'True'
else
p 'False'
end
end
# メソッド呼び出し
end_other('Apple', 'Ple')
end_other('orange', 'Range')
end_other('banana', 'Nana')
まとめ
- Rubyが用意してくれているメソッドを使うことで簡単に小文字から大文字に変換、大文字から小文字に変換などをすることができる。