RubyのStringクラスについて

RubyのStringクラスについて

Ruby技術者認定試験に合格して、すっかりRubyエンジニアなイハです。(※もちろん嘘です)

今回はこれ試験に出てたな〜とか忘れがちだな〜と感じたものを中心に、
Stringクラスについてまとめようと思います。



Stringクラスとは

文字列を表すオブジェクト。
シングルクォート” または ダブルクォート””で記述する。
ダブルクォートの中では、#{…}を用いた式展開ができるとのこと。

*シングルクォートで記述した場合
puts ‘a:\t#{2+2}’=>a:\t#{2+2}

*ダブルクォートで記述した場合
puts “a:\t#{2+2}”=>a: 4



ヒアドキュメント

複数行の文字列を表現するときに使う
(模擬問題でよく出題されていて、試験にも出てた気がする)

str = <<EOS
あいうえお
かきくけこ
EOS

<<のあとはヒアドキュメントの識別子で、大文字小文字のアルファベット・数字・アンダースコア(_)などが使用できる。
一般的にはEOS(End Of String)やEOM(End Of Message)などがよく使われるそう。

ちなみに、ヒアドキュメント開始の識別子の直前にハイフンをつけると、終端の識別子をインデントできる。

str = <<-EOS
あいうえお
かきくけこ
   EOS

さらに、ヒアドキュメントの開始の識別師をシングルクォートで囲むことで、式展開やバックスラッシュ記法を無効にすることができる。

str = <<‘EOS’ #{foo}\t#{bar}\t#{baz} EOS puts str=>#{foo}\t#{bar}\t#{baz}



試験&公式ガイドの模擬問題で見た気がするメソッド

#gsub

パターンにマッチした文字列を置換する。
puts ‘ab-12-3’.gsub(/[0-9]+/,”x”)=>“ab-x-x”

ちなみにString#subは最初にマッチした文字列のみ置換する。
puts ‘ab-12-3’.sub(/[0-9]+/,”x”)=>“ab-x-3”

#index

文字列を先頭から検索して、見つかった位置のインデックスを返す。
p “abc/defgh/ijk”.index(“/”)=>3

第2引数で検索を開始する位置を指定できる。
(問題ではこっちが大体出る)
p “abc/defgh/ijk”.index(“/”,8)=>9

#slice

指定した範囲を文字列から取り除く。
p “abcdefg-123”.slice(3)=>“d” 位置を指定
p “abcdefg-123”.slice(3,2)=>“de” 開始位置と取得文字数で指定
p “abcdefg-123”.slice(3..7)=>“defg-“ 範囲で指定
p “abcdefg-123”.slice(/[a-z]+/)=>“abcdefg” 正規表現で指定

String#[]を用いることも可能。
p “abcdefg-123″[2,3]

#chomp

文字列の末尾にある改行コードを1つだけ取り除いた文字列を返す。
p “abcd\n\n”.chomp=>“abcd\n”

#chop

文字列の末尾の1文字を取り除いた文字列を返す。
行末が\r\nである場合はその2文字を削除する。
p “abcd”.chop=>“abc”

よくchompとchopがこんがらがっちゃったりするんですよね…

#split

文字列に含まれる特定の文字を区切り文字として配列を生成する。
“foo,bar,baz”.split(“,”)=>[“foo”, “bar”, “baz”]

#ord

文字列の最初の文字のコードポイントを返す。
#encoding: utf-8
p “あいうえお”.ord
=>3042

私が受けた2回の試験では両方ともこのメソッドが出ました。
1.8しか勉強していなかった初回でこんなメソッド知らないからない!と自信満々に不正解を叩き出した苦い思い出が…



とりあえず終わりに

まとめようとしたらキリがないですが、上記のメソッドは高確率で出題されるはずです…恐らく…

記事を書きながら、試験以降目にしていないものの記憶が曖昧になっていることに気付いたので、
こうやってまとめつつ忘れないように復習していこうと思います。

TAG

  • このエントリーをはてなブックマークに追加
イハ
エンジニア イハ iha

仮面ライダーになりたかった最年少ポジティブゆとり世代です。ここの文章が短いとレイアウトが崩れるので書いておきますが、沖縄ファミリーマートの泡盛コーヒーは美味しい。