你可以得到這些文件的基本名稱,拆分周圍_
和排序[number, letter]
:
# filenames = Dir.glob('input/*')
filenames = ["input/a_6", "input/b_8", "input/b_7", "input/a_3", "input/a_4", "input/b_4", "input/b_9", "input/b_1", "input/b_11", "input/a_11", "input/b_3", "input/b_2", "input/a_1", "input/b_6", "input/b_12", "input/a_8", "input/a_2", "input/a_9", "input/a_5", "input/b_10", "input/a_7", "input/b_5", "input/a_10", "input/a_12"]
filenames.sort_by! do |filename|
letter, number = File.basename(filename).split('_')
[number.to_i, letter]
end
p filenames
# ["input/a_1", "input/b_1", "input/a_2", "input/b_2", "input/a_3", "input/b_3", "input/a_4", "input/b_4", "input/a_5", "input/b_5", "input/a_6", "input/b_6", "input/a_7", "input/b_7", "input/a_8", "input/b_8", "input/a_9", "input/b_9", "input/a_10", "input/b_10", "input/a_11", "input/b_11", "input/a_12", "input/b_12"]
我通常喜歡把輸入文件和腳本在不同的文件夾。
最後,由於"3".to_i
和"3.txt".to_i
都返回3
,此代碼應該適用於任何擴展名(包括無擴展名)。
你需要像'File.open( 「一_#{I} .TXT」, 「R」)'?而'i'會改變,文件名也會改變,你將能夠在每次新的迭代中讀取新文件。檢查此片段 - https://repl.it/HTfV – marmeladze
@marmeladze將打開'a_1.txt','a_2.txt','a_3.txt'等等,而OP希望'a_1.txt', b_1.txt','a_2.txt','b_2.txt',... – Stefan