TECH EXPERT 64,65日目

TECH::EXPERT

土日はつくばに帰ってお休みです。
面接官に教えてもらったpaizaを少しだけやってみた。
といっても2問しか解いてないけど。

低ランクは初心者向けの問題で、なめてんのかってレベルの難易度。
テスト自体は解けて当たり前。
だけど、実際に解くともっと効率よくできないかな?とかいろいろ検索するので、知識が広がっていくので楽しい。問題提起されてそれを解消する行為自体が学習にとても良い環境だと思うので、今後も使っていこうと思う。

自分で能動的に知識を広げるにしても限界がある。
命題を与えられて、それに対して知能を振り絞ってgoogleに助けを借りながら探っていく過程は非常に面白い。

ruby

文字列置換

.sub .gsub 文字列置換

gsubはグローバルマッチ。一致するすべてを置換する。
subは最初に一致したもののみを置換する。

"abcabc".sub(/ab/, "de")
=> decabc

"abcabc".sub(/ab/, "de")
=> decdec

.tr 文字置換

translate / transliterateの略。
subと違い、単一の文字を検索し、置換する。

"abcde".tr("dce", "124")
=> ab214

rangeを指定できる。

"abcde".tr("a-c", "1-3")
=> 123de

"abcde".tr("a-z", "e-za-d")
=> 123de

第1引数の文字数と第2引数の文字数が合わない場合は第2引数の最後の文字が適応される。

"abcde".tr("a-d", "1-2")
=> 1222e

^で否定を表現する。

"abcde".tr("^a-c", "@")
=> abc@@

.squeeze

同一文字の連続をまとめる。引数を指定すると、引数の文字のみまとめる。

"aaaaaaaaaaabbbb333".squeeze
=> ab3

"aaaaaaaaaaabbbb333".squeeze("ab")
=> ab333

tr_s

.trと.squeezeの合わせ技。
置換して文字列をまとめる。

"aaaabbbccc".tr_s("ab". "12")
=> 12ccc

コメント