如果我在c1
中有一个字符串,我可以通过以下方式将其打印出来:
c1.each_line do |line|
puts line
end
我想用每行给出每行的编号:
c1.each_with_index do |line, index|
puts "#{index} #{line}"
end
但这并不适用于字符串。
我尝试使用$.
。当我在上面的迭代器中这样做时:
puts #{$.} #{line}
它打印每行最后一行的行号。
我也尝试使用lineno
,但这似乎仅在我加载文件时有效,而不是在我使用字符串时。
如何打印或访问字符串上每行的行号?
答案 0 :(得分:18)
略微修改代码,试试这个:
c1.each_line.with_index do |line, index|
puts "line: #{index+1}: #{line}"
end
这与Enumerable中的with_index
方法一起使用。
答案 1 :(得分:4)
稍微修改@ sagarpandya82&#39的代码:
c1.each_line.with_index(1) do |line, index|
puts "line: #{index}: #{line}"
end
答案 2 :(得分:3)
c1 = "Hey diddle diddle,\nthe cat and the fiddle,\nthe cow jumped\nover the moon.\n"
n = 1.step
#=> #<Enumerator: 1:step>
c1.each_line { |line| puts "line: #{n.next}: #{line}" }
# line: 1: Hey diddle diddle,
# line: 2: the cat and the fiddle,
# line: 3: the cow jumped
# line: 4: over the moon.