Rubyでは文字列はString
クラスのオブジェクトとして扱われます。
String
クラスには文字列を操作するのに、便利なメソッドが多く用意されています。
この記事ではRubyでの文字列の基本やString
クラスのメソッドを紹介していきたいと思います。
文字列の定義
Rubyで文字列を定義する方法はいくつかあるので、まずはそちらを紹介していきます。
一番シンプルなのは、変数に初期化する形で定義する方法です。
文字列を定義するには、シングルクウォートまたはダブルクウォートで文字を囲むようにしてあげることで定義することができます。
str = "文字列"
# または
str = "文字列"
また、Stirng
クラスのインスタンス化を行うことでも文字列を定義することができます。
str = String.new('文字列')
文字列の基本的な操作
Rubyでは他のプログラミング言語同様に文字列の連結や繰り返しなども行えます。
文字列の連結
文字列の連結をするには、「+
」を使います。
str = "文字列" + "です。"
p str
=> "文字列です。"
文字列の繰り返し
同じ文字列を繰り返すには、「*
」を使います。
str = "文字列" * 10
p str
=> "文字列文字列文字列文字列文字列文字列文字列文字列文字列文字列"
文字列の追加
文字列の変数に文字列を追加することもできます。
str = "文字列"
str << "です。"
p str
=> "文字列です。"
書式付き文字列
書式付きの文字列を出力するには、「%
」を使います。
str = "10"
p "%.4f" % str
=> "10.0000"
文字列の式展開
変数に代入した文字列を展開することができます。
これを式展開や変数展開と言ったりします。
ダブルクウォートの中で、#{変数}
とすることで変数の値が展開されて、文字列が連結されます。
シングルクウォートを使った場合は、指揮展開できないので注意してください。
str = "文字列"
p "#{str}です。"
=> "文字列です。"
文字列の比較
2つの文字列が同じ文字列か比較するには==
を使って、比較します。
str1 = "hello"
str2 = "hello"
p str1 == str2
=> true
なお、文字列の順番を比較することもできます。
<, <=, >, >=
を使うことで文字列の順番を比較します。比較結果は論理値が返ってきます。
str1 = "hi"
str2 = "hello"
p str1 < str2
=> true
また、<=>
を使うことでも文字列の順番を比較することができます。この場合、比較結果は左の文字列の方が大きい場合は1、右の文字列の方が大きい場合は-1が返ってきます。
str1 = "hi"
str2 = "hello"
p str1 <=> str2
=> -1
Stringクラスのメソッド紹介
基本的な文字列の操作を紹介しましたが、String
クラスのメソッドを使うことでより複雑な文字列操作を行うことができます。
ここではString
クラスのメソッドをいくつか紹介したいと思います。
文字列の変換
upcaseメソッド
文字列の小文字を大文字に変換します。
str = "hello"
p str.upcase
=> "HELLO"
downcaseメソッド
文字列の大文字を小文字に変換します。
str = "HELLO"
p str.downcase
=> "hello"
capitalizeメソッド
文字列の最初の文字を大文字に変換し、最初以外の文字を小文字に変換します。
str = "heLLo"
p str.capitalize
=> "Hello"
文字数の取得
sizeメソッド
文字列の長さを取得することができます。
str = "hello"
p str.size
=> 5
lengthメソッド
こちらもsizeメソッドと同様に、文字列の長さを取得することができます。
str = "hello"
p str.length
=> 5
countメソッド
文字列中の特定の文字の数を取得することができます。
引数に数えたい特定の文字を指定します。
str = "hello"
p str.count('l')
=> 2
文字列の切り取り
sliceメソッド
文字列の中から指定した範囲の文字列を切り取ります。
第1引数には切り取り始める文字列のインデックスを指定して、第2引数で切り取る文字数を指定します。
str = "hello"
p str.slice(1, 3)
=> "ell"
deleteメソッド
文字列の中から指定した文字を削除します。
引数に削除したい文字を指定します。
str = "hello"
p str.delete('l')
=> "heo"
整数/浮動小数点への変換
to_iメソッド
数値の文字列を整数型へ変換します。
num = "10"
p num.to_i
=> 10
to_fメソッド
数値の文字列を整数型へ変換します。
num = "10.2"
p num.to_f
=> 10.2
文字列の検索
empty?メソッド
対象の文字列が空文字列かどうかを検索します。
str = "hello"
str.empty?
=> false
include?メソッド
対象の文字列に指定の文字列が含まれるかどうかを検索します。
str = "hello"
str.include?('lo')
=> true
indexメソッド
対象の文字列に指定の文字列が含まれていれば、開始位置を検索します。
str = "hello"
str.index('lo')
=> 3
start_with?メソッド
対象の文字列が指定の文字列で始まっているかどうかを検索します。
str = "hello"
str.start_with?('he')
=> true
end_with?メソッド
対象の文字列が指定の文字列で終わっているかどうかを検索します。
str = "hello"
str.end_with?('he')
=> false
まとめ
Rubyの文字列はString
クラスのオブジェクトであるというところから、文字列の基本やString
クラスのメソッドの使い方まで紹介していきました。
文字列の操作はプログラミングにおいて基本中の基本なので、ぜひ使いこなせるようにしましょう。
String
クラスのメソッドについてはこの記事で紹介したメソッド以外にも数多く用意されています。
メソッドについては暗記するのではなく、その都度調べながら使っていきましょう。