2009-03-02 7 views

答えて

84

String#each_line

str.each_line do |line| 
    #do something with line 
end 
+3

あなたはモンスターです!それを愛する –

19

何Iraimbilanjaは語りました。

それとも、新しい行の文字列を分割できます。

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

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

私がここで使用している正規表現は、3つの行終了フォーマットのすべてを扱うことに注意してください。 String#each_lineは、オプションの引数sep_stringで行を区切ります。デフォルトは$/で、デフォルトは"\n"になります。

さらに複雑な文字列解析を行う場合は、組み込みのStringScannerクラスをチェックしてください。

3

また、任意のパターンにして行うことができます。私は、これは改行の世話をするべきだと思い

str.scan(/\w+/) do |w| 
    #do something 
end 
-2
str.each_line.chomp do |line| 
    # do something with a clean line without line feed characters 
end 

+1

それは動作しません。ブロックがない文字列#each_lineは、chompに応答しない列挙子を返します。 chompを超えてブロックを取ることはありません。 – Chuck

+1

'str.each_line.map(&:chomp).each do | line | ... 'のようなことがありますが、' each_line'反復では1回のパスとして行うこともできます。 – jwadsack

関連する問題