Ruby-读取文件和打印行号

时间:2018-08-18 15:34:33

标签: ruby file

这很难解释,我也没有找到答案。

我希望能够在Ruby中读取.txt文件,并且能够以某种方式打印行号。

示例:

 function setGlobal() {
   var shouldNotBeGlobal = 'but it is!';
 } 
 setGlobal();

 console.log(window.shouldNotBeGlobal)  // "undefined"

我希望这是有道理的,我希望这很容易。

预先感谢, 里斯

2 个答案:

答案 0 :(得分:2)

您可以使用Enumerable#each_with_index

  

为每个项目调用带有两个参数(项目及其索引)的块   在枚举中。给定的参数将传递给each()。

File.open(filename).each_with_index do |line, index|
  p "#{index} #{line}"
end

答案 1 :(得分:2)

Ruby与Perl一样,具有特殊变量$.,该变量包含文件的行号。

File.open("file.txt").each do |line|
   puts line, $.
end

打印:

#Hello
1
#My name is John Smith
2
#How are you?
3

如果您希望数字在同一行上,请从\n剥离line

File.open("file.txt").each do |line|
   puts "#{line.rstrip} #{$.}"
end

#Hello 1
#My name is John Smith 2
#How are you? 3

如注释中所述,除了使用File.open之外,还可以使用File.foreach并在块末尾使用自动关闭功能:

File.foreach('file.txt') do |line|
    puts line, $.
end 
# same output...