如何打印字符串中每行的行号?

时间:2016-07-31 12:58:53

标签: ruby string

如果我在c1中有一个字符串,我可以通过以下方式将其打印出来:

c1.each_line do |line|
  puts line
end

我想用每行给出每行的编号:

c1.each_with_index  do |line, index|
  puts "#{index} #{line}"
end

但这并不适用于字符串。

我尝试使用$.。当我在上面的迭代器中这样做时:

puts #{$.} #{line}

它打印每行最后一行的行号。

我也尝试使用lineno,但这似乎仅在我加载文件时有效,而不是在我使用字符串时。

如何打印或访问字符串上每行的行号?

3 个答案:

答案 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.