Rubyで先頭からの文字数を指定して文字列を2分割する
Ruby勉強中です。
CodeIQのアルゴリズム問題を考えてるときにタイトルのような処理がしたいと思いました。
(先頭からの文字数を変えながら分割して、分割後の前後の文字列を比較するみたいな処理がしたかった。)
こんな感じ。
"1234567" を先頭3文字抽出 => ["123", "4567"]
以下のような記事を読んだのですが、微妙に違う。
文字列の一部を取得する - 文字列(String)クラス - Ruby入門
文字列の抽出だけでなく残りの文字列もArrayにいれた状態でほしい
Ruby 文字列を任意の文字数に分割する - Qiita
すべてを分割するのではなく先頭数文字だけ抽出したい。
微妙に違いましたが、2つ目の記事が近い感じです。
どうやら String#split のセパレータに正規表現を使ってやるとうまくできそう。
実験。
pry(main)> "1234567".split(/\A(.{1,3})/, 2) => ["", "123", "4567"]
ふむ。1要素目に空文字列が入ってますが、分割はうまくいきました。
1要素目に空文字列が入るのは正規表現をセパレータとして使ってるからですね。
空文字列はいらないので除去。
pry(main)> "1234567".split(/\A(.{1,3})/, 2)[1..-1] => ["123", "4567"]