文字列メソッドを使おう
文字列の分割・空白除去・置換・大文字小文字変換など、文字列を加工するメソッドを学びます。
.split で文字列を分割する
.split メソッドを使うと、文字列を指定した区切り文字で分割し、配列にすることができます。
text = "apple,banana,orange" fruits = text.split(",") p fruits # => ["apple", "banana", "orange"]
引数を省略すると、空白(スペース、タブ、改行)で分割されます。
text = "Ruby is awesome" words = text.split p words # => ["Ruby", "is", "awesome"]
連続した空白も1つの区切りとして扱われます。
text = "Ruby is awesome" words = text.split p words # => ["Ruby", "is", "awesome"]
.split はデータの解析でよく使われます。例えば、CSV のようなカンマ区切りのデータを処理するときに便利です。
.strip で空白を除去する
.strip メソッドを使うと、文字列の先頭と末尾にある空白を除去できます。
text = " Hello, World! " p text.strip # => "Hello, World!"
先頭だけ除去したい場合は .lstrip、末尾だけ除去したい場合は .rstrip を使います。
text = " Hello, World! " p text.lstrip # => "Hello, World! " p text.rstrip # => " Hello, World!"
.strip はユーザー入力の処理でよく使われます。入力の前後に余分な空白が含まれていることは多いため、これを取り除くことで正確なデータ処理ができます。
.gsub で文字列を置換する
.gsub メソッドを使うと、文字列内の一部を別の文字列に置き換えることができます。第1引数に検索する文字列、第2引数に置換後の文字列を指定します。
text = "Hello, World!" new_text = text.gsub("World", "Ruby") # "World" を "Ruby" に置換 puts new_text # => Hello, Ruby!
一致するすべての箇所が置き換えられます。
text = "apple, apple, apple" new_text = text.gsub("apple", "orange") puts new_text # => orange, orange, orange
空文字列に置き換えることで、特定の文字を削除することもできます。
text = "Hello, World!" new_text = text.gsub(",", "") puts new_text # => Hello World!
最初の1箇所だけを置換したい場合は .sub メソッドを使います。.gsub の「g」は「global(全体)」の意味です。
text = "apple, apple, apple" puts text.sub("apple", "orange") # => orange, apple, apple
.upcase と .downcase で大文字・小文字を変換する
.upcase メソッドを使うと、文字列内のすべての小文字を大文字に変換できます。
text = "hello" puts text.upcase # => HELLO
.downcase メソッドを使うと、すべての大文字を小文字に変換できます。
text = "HELLO" puts text.downcase # => hello
大文字小文字を区別しない比較をするときによく使われます。
user_input = "YES" if user_input.downcase == "yes" puts "承認されました" end # => 承認されました
.capitalize で先頭だけ大文字にする
.capitalize メソッドを使うと、文字列の先頭を大文字に、それ以外を小文字に変換できます。
text = "hello" puts text.capitalize # => Hello text = "hELLO" puts text.capitalize # => Hello
名前の整形などに便利です。
name = "taro" puts name.capitalize # => Taro
メソッドチェーン
文字列メソッドは新しい文字列を返すため、メソッドを連続して呼び出すことができます。これをメソッドチェーンと呼びます。
text = " Hello, World! " result = text.strip.downcase.gsub(",", "") puts result # => hello world!
この例では、まず前後の空白を除去し、次に小文字に変換し、最後にカンマを削除しています。
まとめ
.split(区切り文字)で文字列を配列に分割できる(省略時は空白で分割).stripで先頭と末尾の空白を除去できる.lstripで先頭のみ、.rstripで末尾のみの空白を除去できる.gsub(検索文字列, 置換文字列)で文字列を置換できる.upcaseで大文字に、.downcaseで小文字に変換できる.capitalizeで先頭だけ大文字、それ以外を小文字に変換できる- 文字列メソッドは新しい文字列を返すため、メソッドチェーンで連続して呼び出せる
演習に挑戦