как отсортировать файл в ruby - PullRequest
5 голосов
/ 29 июля 2010

Это содержимое моего файла.

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

Есть ли лучший способ сортировки файлов?

Ответы [ 3 ]

15 голосов
/ 29 июля 2010

Если ваш файл называется "abc"

`sort abc -o abc`

Ruby не следует использовать в качестве золотого молотка.С помощью команды sort это будет намного быстрее.

6 голосов
/ 29 июля 2010

Очевидное упрощение:

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)
0 голосов
/ 29 июля 2010
File.open("out.txt", "w") do |file|
  File.readlines("in.txt").sort.each do |line|
    file.write(line.chomp<<"\n")
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...