这是我的文件内容。
Receivables=Por cobrar
Payables=Cuentos por pagar
ytdPurchases.label=Purchases YTD
validationError.maxValue=Value is too large, maximum value allowed is {0}
我想按字母顺序对这些内容进行排序...... 我怎么能这样做?
更新: 此代码将对我的文件进行排序。
new_array = File.readlines("#{$base_properties}").sort
File.open("#{$base_properties}","w") do |file|
new_array.each {|n| file.puts(n)}
end
有没有更好的方法来排序文件?
答案 0 :(得分:15)
假设您的文件名为“abc”
`sort abc -o abc`
Ruby不应该被用作金锤。通过使用命令sort
,它会更快。
答案 1 :(得分:6)
明显的简化:
new_array = File.readlines("#{$base_properties}").sort
File.open("#{$base_properties}","w") do |file|
file.puts new_array
end
我只是定义一个这样的方法,与File.read
相反。它是高度可重用的,并且应该成为标准的一部分:
def File.write!(path, contents)
File.open(path, "w"){|fh| fh.write contents}
end
然后排序变为:
File.write!($base_properties, File.readlines($base_properties).sort.join)
答案 2 :(得分:0)
File.open("out.txt", "w") do |file|
File.readlines("in.txt").sort.each do |line|
file.write(line.chomp<<"\n")
end
end