在 Ruby/Rails 中迭代文本行的万无一失的方法是什么?
What's a foolproof way to iterate over lines of text in Ruby/Rails?
我正在使用 Ruby 2.3 和 Rails 5. 当行分隔符不一定是“\n”时,如何遍历文本块中的行?我发现这段代码
text.each_line do |cur_line|
puts "#{cur_line.length}"
end
如果变量 "text" 为“1\n2\n3”, 将打印出三行,但如果文本为“1\r2\r3”,则将打印出一行。可能还有其他我没有考虑的情况。我正在寻找一种万无一失的方法来遍历行,最好是自动检测行分隔符的方法。
使用split
代替each_line
text.split(/[\n\r]+/).each do |cur_line|
puts "#{cur_line.length}"
end
与\n
或\r
分开
text = "1\n2\n3"
#=> 1
#=> 1
#=> 1
text = "1\r2\r3"
#=> 1
#=> 1
#=> 1
text = "1111\n\r22222\r\n333"
#=> 4
#=> 5
#=> 3
我正在使用 Ruby 2.3 和 Rails 5. 当行分隔符不一定是“\n”时,如何遍历文本块中的行?我发现这段代码
text.each_line do |cur_line|
puts "#{cur_line.length}"
end
如果变量 "text" 为“1\n2\n3”,将打印出三行,但如果文本为“1\r2\r3”,则将打印出一行。可能还有其他我没有考虑的情况。我正在寻找一种万无一失的方法来遍历行,最好是自动检测行分隔符的方法。
使用split
代替each_line
text.split(/[\n\r]+/).each do |cur_line|
puts "#{cur_line.length}"
end
与\n
或\r
分开
text = "1\n2\n3"
#=> 1
#=> 1
#=> 1
text = "1\r2\r3"
#=> 1
#=> 1
#=> 1
text = "1111\n\r22222\r\n333"
#=> 4
#=> 5
#=> 3