From: KOSAKI Motohiro Date: 2014-05-08T22:39:47-04:00 Subject: [ruby-dev:48198] Re: [ruby-trunk - Feature #9816] 文字列内の数字を数値として比較するメソッド 2014-05-08 7:54 GMT-04:00 Tadayoshi Funaba : > 名前はともかく俺が欲しいのは filevercmp のほうかもしれない。 > > x #=> ["2.1.10", "2.1.2", "8 layers", "8 layers 2", "8 layers 2.nki", "8 layers.nki", "a16", "a17"] > puts x.sort{|a,b| a.numericcmp(b)} > 2.1.2 > 2.1.10 > 8 layers > 8 layers 2 > 8 layers 2.nki > 8 layers.nki > a16 > a17 > #=> nil > > $ ls -1v > 2.1.2 > 2.1.10 > 8 layers > 8 layers.nki > 8 layers 2 > 8 layers 2.nki > a16 > a17 ためしたところ、Windows Explorerはまたちょっと違う順序を示すようです(Windows8で確認) 05/08/2014 10:34 PM 0 2.1.10.txt 05/08/2014 10:34 PM 0 2.1.2.txt 05/08/2014 10:35 PM 0 8 layers 2.nki.txt 05/08/2014 10:35 PM 0 8 layers 2.txt 05/08/2014 10:35 PM 0 8 layers.nki.txt 05/08/2014 10:35 PM 0 8 layers.txt 05/08/2014 10:35 PM 0 a16.txt 05/08/2014 10:36 PM 0 a17.txt でも "8 layers 2" が "8 layers" より前に来て嬉しいケースが思いつかないので無視していいと 思ってます。(ドキュメントに多少追記しておくと親切かもだけど) usaさん、コメントありますか?