如何在ruby中对文件进行排序

kru*_*hah 5 ruby sorting file

这是我的文件内容.

Receivables=Por cobrar
Payables=Cuentos por pagar 
ytdPurchases.label=Purchases YTD
validationError.maxValue=Value is too large, maximum value allowed is {0}
Run Code Online (Sandbox Code Playgroud)

我想按字母顺序对这些内容进行排序......我怎么能这样做?

更新:此代码将对我的文件进行排序.

new_array = File.readlines("#{$base_properties}").sort
File.open("#{$base_properties}","w") do |file|
  new_array.each {|n| file.puts(n)}
end
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来排序文件?

Rya*_*igg 15

假设您的文件名为"abc"

`sort abc -o abc`
Run Code Online (Sandbox Code Playgroud)

Ruby不应该被用作金锤.通过使用该命令sort,它将更快.

  • @taw:如果你还没有读完整个文件,就不可能对文件进行排序.有关详细信息,请参阅http://stackoverflow.com/a/147826/1403885. (2认同)

taw*_*taw 6

明显的简化:

new_array = File.readlines("#{$base_properties}").sort
File.open("#{$base_properties}","w") do |file|
  file.puts new_array
end
Run Code Online (Sandbox Code Playgroud)

我只是定义一个像这样的方法,与之相反File.read.它是高度可重用的,真的应该成为标准的一部分:

def File.write!(path, contents)
  File.open(path, "w"){|fh| fh.write contents}
end
Run Code Online (Sandbox Code Playgroud)

然后排序变成:

File.write!($base_properties, File.readlines($base_properties).sort.join)
Run Code Online (Sandbox Code Playgroud)