我怎么排序哈希表的键(音素) 我的意思是,如果在哈希表(称为%tags
)3个按键,"MWE", "wPrefix", "conjunction"
,如果我使用常规排序:案例独立分拣
foreach $tag (sort keys %tags) {
print "$tag\n";
}
我得到的输出是:
MWE
conjunction
wPrefix
但输出应该是:
conjunction
MWE
wPrefix
我怎么排序哈希表的键(音素) 我的意思是,如果在哈希表(称为%tags
)3个按键,"MWE", "wPrefix", "conjunction"
,如果我使用常规排序:案例独立分拣
foreach $tag (sort keys %tags) {
print "$tag\n";
}
我得到的输出是:
MWE
conjunction
wPrefix
但输出应该是:
conjunction
MWE
wPrefix
使用块代码排序功能,每个项目的大写比较:
foreach $tag (sort {uc($a) cmp uc($b)} keys %tags) {
print "$tag\n";
}
这是不区分大小写的排序,因为@戴夫Sherohman指出
值得指出的是,Perl的V16具有适当的情况下折叠设施,与完整的Unicode字符集工作公正。你需要'使用的功能“fc''(或'使用5.016'),然后'FC美元CMP FC $ B'。 – Borodin
@Borodin的确如此;肯定有使用'uc'而不是'fc'产生错误答案的情况。而且,即使如此,对于整理不好的非套装物品也没有合理的结果。数字在字母方面在哪里?那么各种符号和标点符号等呢? – tchrist
'fc'也可在比皮尔斯5.16(但至少5.8.1)的年龄较大的通过安装[Unicode的:: CaseFold](https://metacpan.org/pod/Unicode::CaseFold)。 – hobbs
我相信你说的是“不区分大小写”排序而不是“语音”排序。如果不是,那么你必须指定你的首选方法将单词转换成语音表示。 –