为什么以下代码:
#!/usr/bin/ruby
replacements = ['A1', 'E1', 'I1', 'Y1', 'U1', 'O2', 'O1', 'Ae', 'D1', 'Th', 'o1', 'u1', 'y1', 'ae', 'a1', 'i1', 'th', 'd1', 'o2']
contentsArray = File.readlines(ARGV[0])
wordArray = []
existingWords = []
contentsArray.each do |i|
i.capitalize!
i<<"_setn.caf"
open("hljodsetn_final", "a") do |f|
puts i
end
end
产生这种输出
someString1
_setn.caf
someString2
_setn.caf
someString1
_setn.caf
我期待的地方
someString1_setn.caf
someString2_setn.caf
someString3_setn.caf
当我直接尝试类似的事情,例如array.each do |f|
并通过"someString"
将f
追加到f<<"someString"
时,它似乎完美无缺,但在此文件资本化的读取实例中并非如此每个,然后附加以"_"
开头的字符串。
真的很感激一些见解!
答案 0 :(得分:1)
您从文件中读取行。每条线自然以换行符结束。然后将文字追加到其后面。
"someString1\n" << "_setn.caf" # => "someString1\n_setn.caf"
你可以摆脱这样的新行,例如:
contentsArray = File.readlines(ARGV[0]).map(&:chomp)
答案 1 :(得分:1)
File.readlines创建一个行数组,这些行都以换行符结尾(这就是它知道在哪里识别行尾)。
i.capitalize!.chomp!
这将摆脱换行符。