2009-03-02 24 views

回答

84

String#each_line

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

你怪物!愛它 – 2014-02-28 20:21:32

19

什麼Iraimbilanja說。

或者你也可以在新的生產線分割字符串:

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

當心each_line保持換行字符,而split吃掉他們。

注意我在這裏使用的正則表達式將處理所有三行結束格式。 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

這將無法正常工作。 String#each_line沒有塊返回一個枚舉器,它不響應chomp。超越chomp並不會阻擋。 – Chuck 2009-03-02 22:48:45