gpt4 book ai didi

javascript - Intl.Collat​​or sorting Japanese - 为什么 collat​​or 不优先考虑日文字符?

转载 作者:行者123 更新时间:2023-11-30 14:10:30 24 4
gpt4 key购买 nike

与 friend 一起工作,我们正在深入研究排序,我们想使用 Intl.Collator 的最佳实践compare 以根据区域设置进行排序。

对于所有语言环境,这都按预期工作,其中语言的字符或文本优先于其他语言,但日语似乎不同。

function letterSort(lang, letters) {
letters.sort(new Intl.Collator(lang).compare);
return letters;
}

console.log('EN sort:');
console.log(letterSort('en', ['a', '手に', '大人', 'b', '学校', '#', '金魚', 'きんぎょ', 'キンギョ']));

// =>["#", "a", "b", "きんぎょ", "キンギョ", "大人", "学校", "手に", "金魚"]

console.log('ZH sort:');
console.log(letterSort('zh', ['a', '手に', '大人', 'b', '学校', '#', '金魚', 'きんぎょ', 'キンギョ']));

// => ["#", "大人", "金魚", "手に", "学校", "a", "b", "きんぎょ", "キンギョ"]

console.log('JP sort:');
console.log(letterSort('ja', ['a', '手に', '大人', 'b', '学校', '#', '金魚', 'きんぎょ', 'キンギョ']));

// => ["#", "a", "b", "きんぎょ", "キンギョ", "大人", "学校", "手に", "金魚"]

在上面的代码片段中,您会注意到英文和中文分别会优先显示各自的文本。然而,日本人没有。

经过一些挖掘,我发现有一个 ICU Project Demo似乎类似的命令已经完成并由 ICU 强制执行。看起来也像ordering in Japanese is a tough problem .

enter image description here

我的同事将此作为外卖发布,我觉得这篇文章有点触动它

ok I think I understand the problem better, basically Japanese has four valid character sets one of them being roman characters so sorting in Japanese will sort each character set within itself and not amongst each other. And roman characters come first of the four sets (cause unicode).

^ 这个解释对吗?或者有没有更好更合适的方式来订购日语,首先优先考虑日语字符(虽然听起来这是不好的做法,但我很惊讶日本人可以在各种结尾使用自己的语言)。这篇文章也详细讨论了这个问题,但我不确定是否有新发现的订购日语的方法

最佳答案

由于日语有四种有效的字符集,因此排序仅发生在每个字符集内,然后每个字符集以预定方式相对于另一个字符集排序:

  1. Rōmaji
  2. Katakana
  3. Hiragana
  4. Kanji

注意:Romaji,就是罗马字符集。

你可以自己试试:

function letterSort(lang, letters) {
letters.sort(new Intl.Collator(lang).compare);
return letters;
}

const kanji = ['南', '北', '打'];
const hiragana = ['ぬ', 'ち', 'よ'];
const katakana = ['シ', 'イ', 'ホ'];
const romaji = ['a', 'c', 'b'];

console.log(letterSort('ja', [...kanji, ...hiragana, ...katakana, ...romaji]))

我们确实看到结果符合我们的预期:字符集首先相对于彼此对自身进行排序,而更精细的排序仅发生在每个字符集中。

关于javascript - Intl.Collat​​or sorting Japanese - 为什么 collat​​or 不优先考虑日文字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54543528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com