前回より少し間が空きましたが、今回は 4章「文字列」についてまとめていきます
読み終えてはいるのですが、まとめるのに時間がかかる・・・
前回の3章「数値」はこちら
文字列
文字列リテラルについて
""
, ''
で作成したい文字列を括ることで文字列リテラルとして解釈される
puts "Hello Ruby" # => "Hello Ruby"
バックスラッシュ記法について
""
で区切られた文字列はバックスラッシュを解釈することができる
"\n" # => 改行コード(LF) "\s" # => スペース '\n' # => "\n" '\s' # => "\s"
式展開について
ダブルクォーテーションで括られた文字列内部では文字列展開が行われるが、シングルクォーテーションの場合は展開されない
str = "Ruby" puts "Hello #{str}" # => "Hello Ruby" puts 'Hello #{str}' # => "Hello \#{str}"
内部的な処理としては、 to_s
を呼び出しオブジェクトの文字列表現を取得しようとしている
文字列化メソッドについて
to_s メソッド オブジェクトを人間が読みやすい形で文字列化する
puts
メソッドでは引数をto_s
メソッドで文字列化した結果を出力しているinspect メソッド プログラムの内部状態を把握するために適した形で文字列化する
p
メソッドは、引数をinspect
した結果を出力している
バッククォート文字列
バッククォートで括ることで特殊な文字列となり、中身をシェルコマンドとして実行しコマンドが出力した結果を元に文字列を構築する
`which bash` # => "/bin/bash\n"
パーセント記法
""
, ''
以外で文字列リテラルを表現する方法としてパーセント記法がある
str = "Ruby" %Q[Hello #{str}] # => "Hello Ruby" %q[Hello #{str}] # => "Hello \#{str}"
ヒアドキュメント
行を区切りとする文字列リテラルである
式展開、バックスラッシュ記法は区切り語を括っている引用符によって決まり、デフォルト(何もつけない場合)では ""
と同じである
また、区切り語の前に <<-""
のように -
をつけることで、ヒアドキュメント終了の区切り語の行で空白スペースを許容することができる
インデントを揃えたいような時に便利
sample = <<"EOS" hoge bar foo EOS puts sample # => hoge # => bar # => foo
文字列操作
- 結合
puts "Hello " + "Ruby" # => "Hello Ruby"
- 反復
puts "Hello" * 3 # => "HelloHelloHello"
- 分解
"Perl Ruby PHP".split(/s, ,/) # => "Perl Ruby PHP"
- 比較
"Ruby" == "Ruby" # => true "Ruby" == "Perl" # => false
シンボルについて
文字列は内容が同じ場合でも同一のオブジェクトは限らないがシンボルでは同じオブジェクトとして扱う
オブジェクトとして同一か調べれば良いので文字列と比べて高速に処理することができる
また、内容に対して唯一性を維持しなければいけないので immutable である
str = :ruby puts str # => ruby hash = {:hoge => "hoge"} puts hash[:hoge] # => "hoge"