如何在Ruby中打印行号

时间:2014-08-14 14:54:03

标签: ruby whitespace

我正在尝试浏览一个文件,检查每行是否有空白区域。我们想要使用空格作为开始或制表符。如果一行以空格开头而另一行以制表符开头,我想通知用户白色空格不一致。一个例子我想打印一行以空格开头,一行以制表符开头。而且我坚持在获得行号部分。我尝试使用file.gets来获得第一个空白区域,但它对我不起作用(所以我没有在下面的代码中包含它)。帮助我如何打印行号。

tabs = spaces = false

file = File.read("file_name")
file.each do |line|

  line =~ /^\t/ and tabs = true
  line =~ /^ / and spaces = true    

  if spaces and tabs
    puts  "The white spaces at the beginning of each line are not consistent.\n"
    break
  end
end

2 个答案:

答案 0 :(得分:4)

您应该可以使用file.lineno来获取您在文件中读取的当前行号。

file = File.open("file_name")
file.each do |line|
  ...
  puts "#{file.lineno}: #{line}" # Outputs the line number and the content of the line
end

答案 1 :(得分:4)

基于@ zajn的回答:

file = File.open("filename.txt")
file.each do |line|
  puts "#{file.lineno}: #{line}"
end

或者您可以使用'each with index':

File.open("another_file.txt").each_with_index do |line,i|
  puts "#{i}: #{line}"
end

看起来不那么神奇。