2012-07-15 34 views
1

我剛剛開始使用Ruby,我的第一個程序從txt文件讀取並將每行的修改版本打印到另一個。這樣做是爲了得到這樣的:使用Ruby讀取和修改文件中的行

- Book Title *Book Author* 

要這樣:

Book Title  Book Author 

我的代碼如下所示:

listold = File.open('listas.txt', 'r+') 
listnew = File.new('lista.txt', 'w+') 
listold.each_line {|line| 
    nome, autor = line.split(' *') 
    nome['- '] = ' ' 
    autor = autor.chomp('*') 
    listnew.puts nome << "\t" << autor 
} 

我遇到的問題是它僅適用於過去的在一個文件中行。對於其他人來說,\t間距非常小,而最後的*不會被削減。有誰能夠幫助我?

回答

1

您的分割匹配空間後跟一個*。

您可能想要在'*'而不是'*'上分割。

我試過你的代碼,它適用於我的測試文件的每一行。

+0

它只適用於當我改變拆分,如你所建議的。不過,我不明白爲什麼。謝謝! – 2012-07-15 21:59:16

+0

奇怪..我懷疑charset或類似的問題。換行符是CR,CR/LF還是LF?我在Linux上。 – Satya 2012-07-15 22:03:23

+0

我猜LF,因爲我在Mac上。 – 2012-07-15 22:06:46

相關問題