我有以下perl程序
use 5.014_001;
use utf8;
use Unicode::Collate::Locale;
require 'Unicode/Collate/Locale/cs.pl';
binmode STDOUT, ':encoding(UTF-8)';
my @old_list = (
"cash",
"Cash",
"cat",
"Cat",
"čash",
"dash",
"Dash",
"Ďash",
"database",
"Database",
);
my $col= Unicode::Collate::Locale->new(
level => 3,
locale => 'cs',
normalization => 'NFD',
);
my @list = $col->sort(@old_list);
foreach my $item (@list){
print $item, "\n";
}
该程序打印输出:
现金 现金 猫 猫 现金 短跑 短跑 短跑 数据库 数据库
我相信一个细心的观察者必须在捷克得出结论
我想相信(1),以下是我的理由:
http://en.wiktionary.org/wiki/Index_talk:Czech
它说:
让我们尽可能按照现有的捷克公约对条目进行排序。也就是说,只有以下字符具有任何排序意义:
a bcčde f g h ch i j k l m n o p q rřst u v w x yzž
但是我很困惑,因为我认为“D with a v over it”(并且它是小写的等价物),是捷克字母的一流字母。
当我需要他的时候@tchrist在哪儿?
我对此有任何见解表示感谢。
答案 0 :(得分:0)
如果默认排序不适合你,这个常见的解决方法是一个简单的自己动手:
通过转换字符串来制作排序数组:如果a
和á
应该相同,则转换为a
;如果á
应该遵循a
,请将其转换为a[
,例如z
之后的任何字符都应该没问题。如果我理解正确的话,将ch
转换为h[
,因为它会追踪h
。然后将原始数组与sort-array一起排序。
答案 1 :(得分:0)
尽管捷克语是我的母语,但我并不完全了解捷克语。但肯定的是,对于带有变音符号的ď,ť,和维基,变音符号的含义低于其他捷克语符如č。
为什么呢?这与发音有关。除非同化和非原生语言,所有辅音,但d,t和n都有清晰的发音,无论其背景如何。 (“Ch”被认为是一个单独的字母。)当它们后面跟着“i”,“í”或“ě”时,这三个字母(D,T和N)可以“软化”。在那些情况下,他们被发音,就像他们有一个caron(háček)。结果,他们的变音符号不那么重要了。