web-dev-qa-db-ja.com

Rubyで複数行の文字列をループするにはどうすればよいですか?

初めての簡単な質問Rubyプログラマー。

Rubyでテキストのスラブをどのようにループしますか?改行が出てくるたびに、内側のループを再開したいと思います。

def parse(input)
    ...
end
48
alamodey

String#each_line

str.each_line do |line|
    #do something with line
end
105
Iraimbilanja

イランビランジャが言ったこと。

または、新しい行で文字列を分割することもできます。

str.split(/\r?\n|\r/).each { |line| … }

splitがそれらを食べる間、each_lineは改行文字を保持することに注意してください。

ここで使用した正規表現は、3つの行末フォーマットすべてを処理します。 String#each_lineは、オプションの引数sep_stringで行を区切ります。これはデフォルトで$/になり、それ自体がデフォルトで"\n"になります。

最後に、より複雑な文字列解析を行う場合は、組み込みのStringScannerクラスを確認してください。

19
kch

任意のパターンで行うこともできます:

str.scan(/\w+/) do |w|
  #do something
end
3
Lolindrath