案例独立排序

Sha*_*nKo 3 perl hashtable case-insensitive

如何按键排序哈希表(语音)我的意思是,如果哈希表中有3个键(被调用%tags)"MWE", "wPrefix", "conjunction",如果我使用常规排序:

foreach $tag (sort keys %tags) {
    print "$tag\n";
}
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

MWE
conjunction
wPrefix
Run Code Online (Sandbox Code Playgroud)

但输出应该是:

conjunction
MWE
wPrefix
Run Code Online (Sandbox Code Playgroud)

Mig*_*Prz 6

使用块代码进行排序功能,比较每个项目的大写:

foreach $tag (sort {uc($a) cmp uc($b)} keys %tags) {
    print "$tag\n";
}
Run Code Online (Sandbox Code Playgroud)

这是一个不区分大小写的排序,正如@Dave Sherohman指出的那样

  • 值得指出的是,Perl v16具有适当的案例折叠功能,可以完全使用完整的Unicode字符集.你需要`使用功能'fc'`(或`使用5.016`)然后``fc $ a cmp fc $ b`. (3认同)