+ -
当前位置:首页 → 问答吧 → sort sort sort!!!

sort sort sort!!!

时间:2010-11-02

来源:互联网

有这么一个数组:

@list = ("Alb","ant","zor","Zai");

对它sort时,大写字母开头的都排在前面。
而我想要的是不管大小写,按正常alpha字母顺序进行sort。

于是用了一个施瓦茨转换:

@sort = map { $_->[1] } sort {$a->[0] cmp $b->[0]} map { [lc($_),$_] } @list;

这个works.


然后想到ruby的Schwart Transform应该更简单,一试之下果然是:

> list.map{|c| [c.downcase,c]}.sort.map{|d| d[1]}
=> ["Alb", "ant", "Zai", "zor"]

再进一步深究下,ruby原来用sort_by这个函数(C写的)把施氏转换内置了:

> list.sort_by { |c| c.downcase }
=> ["Alb", "ant", "Zai", "zor"]


嗯嗯,条条大路通罗马,路路相通丰田车!

作者: 兰花仙子   发布时间: 2010-11-02

use Sort::Maker;

你懂的。

作者: flw   发布时间: 2010-11-02



QUOTE:
use Sort::Maker;

你懂的。
flw 发表于 2010-11-02 18:07




    俺还的确没用过这个模块~~
作者倒是认识~~

作者: 兰花仙子   发布时间: 2010-11-02

更悲剧,只听说过这个模块

作者: zhlong8   发布时间: 2010-11-02

本帖最后由 zhlong8 于 2010-11-02 19:10 编辑

看来仙子准备在 Perl 版暴力强推 Ruby 啊

准备去ruby下

作者: zhlong8   发布时间: 2010-11-02

热门下载

更多