你可以得到这些文件的基本名称,拆分周围_
和排序[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