我想算紅寶石文件的行,但我不能讓任何IO
或File
計數的最後一行。 最後一行是什麼意思? 下面是Atom編輯器獲取最後一行的截圖: 紅寶石計數在文件中的行,包括最後一行(空)
Ruby返回20行,我需要21行。這裏是這樣的文件 https://copy.com/cJbiAS4wxjsc9lWI
我想算紅寶石文件的行,但我不能讓任何IO
或File
計數的最後一行。 最後一行是什麼意思? 下面是Atom編輯器獲取最後一行的截圖: 紅寶石計數在文件中的行,包括最後一行(空)
Ruby返回20行,我需要21行。這裏是這樣的文件 https://copy.com/cJbiAS4wxjsc9lWI
有趣的問題(雖然你的例子文件是繁瑣的)。你的編輯器將顯示一個21線,因爲20日線結束有一個換行符。如果沒有結尾的換行符,編輯器將顯示20行。
這裏有一個簡單的例子:
a = "foo\nbar"
b = "baz\nqux\n"
一個文本編輯器會顯示:但是
# file a
1 foo
2 bar
# file b
1 baz
2 qux
3
紅寶石看到2號線在兩種情況下:
a.lines #=> ["foo\n", "bar"]
a.lines.count #=> 2
b.lines #=> ["baz\n", "qux\n"]
b.lines.count #=> 2
你可以欺騙紅寶石成通過添加任意的字符識別其後的換行符:
(a + '_').lines #=> ["foo\n", "bar_"]
(a + '_').lines.count #=> 2
(b + '_').lines #=> ["baz\n", "qux\n", "_"]
(b + '_').lines.count #=> 3
或者你可以使用一個Regexp
該線路的兩端($
或串\Z
)結束比賽:
a.scan(/$|\Z/) #=> ["", ""]
a.scan(/$|\Z/).count #=> 2
b.scan(/$|\Z/) #=> ["", "", ""]
b.scan(/$|\Z/).count #=> 3
令人敬畏的答覆,謝謝! – acrogenesis 2015-02-11 15:27:09
紅寶石lines
方法沒有算上最後的空行。 欺騙,你可以在你流的末尾添加一個任意字符。
紅寶石lines
返回2線這個例子:
1 Hello
2 World
3
相反,它返回在這種情況下
1 Hello
2 World
3 *
你可以發佈你是如何計算的行數3行? – shivam 2015-02-11 06:52:04
你可以簡單地加1('File.foreach(「file.txt的」)。算上+ 1')匹配的文本編輯器的最後一個行號。 – cremno 2015-02-11 07:21:10
沒有21號線。你在編輯器中看到的第21條線是20年代末的'\ n'。所以,正確的答案是:這個文件中有20行。 – 2015-02-11 07:44:41