這是回答我自己的問題,與我原來的問題完全不同,但它完全(或多或少)用於相同的目的。所以,建議塞爾吉奧:說的例子輸入文件是這樣的:
maci:ruby san$ cat OSs.txt
Slackware, Linux, i-num=1
Jaguar, MacX, i-num=6
Chicago, this_Win, i-num=2
Daytona, an_other_Win, i-num=7
RedHat, Linux, i-num=5
Lion, MacY, i-num=4
Caldera, Linux, i-num=9
Longhorn, that_Win, i-num=8
Tiger, MacZ, i-num=3
Indiana, Solaris, i-num=10
Kodiak, MacX, i-num=11
實際的文件,動態與操作系統即文件的數量可變的創造可能會或可能不會有Mac
或Win
的。從那裏走,這是我想出了到目前爲止....
inFile = "OSs.txt"
os = {}
open(inFile, 'r').each do |line|
next if line =~ /^\s*(#|$)/
if line.split(',').map(&:strip)[1] =~ /^Mac/
(os[:Mac] ||= []) << line.split(',').map(&:strip)[0]
end
if line.split(',').map(&:strip)[1] =~ /_Win$/
(os[:Win] ||= []) << line.split(',').map(&:strip)[0]
end
if line.split(',').map(&:strip)[1] !~ /(^Mac|_Win$)/
(os[:Linux] ||= []) << line.split(',').map(&:strip)[0]
end
end
os.each_key do |cls|
p "%s [%s]" % [os[cls][0], os[cls].count]
end
這幾乎是做什麼其實我是想,但我相信有這樣做的很多更好的辦法。乾杯!!
這是你的代碼的稍微改進版本:http://pastie.org/8397525 –
@Sergio Tulentsev:是的,肯定更好。謝謝! – MacUsers