gpt4 book ai didi

javascript - localeCompare 在对带有前导变音字符的单词进行排序时显示不一致的行为

转载 作者:搜寻专家 更新时间:2023-11-01 04:31:16 25 4
gpt4 key购买 nike

在最新的 Firefox 和 Chrome 中测试(在我的系统上有一个“de”语言环境):

"Ä".localeCompare("A")

给我 1,这意味着它认为 "Ä" 应该按排序顺序出现在之后 "A",这是正确的。

但是:

"Ägypten".localeCompare("Algerien")

给我 -1,这意味着它认为 "Ägypten" 应该按排序顺序出现在之前 "Algerien"

为什么?如果它自己检查第一个字符串的第一个字符应该出现在第二个字符串的第一个字符之后,为什么它会看过去每个字符串的第一个字符?

最佳答案

这里有适合您需要的方法,复制粘贴此方法:

递归解析字符串并给出 char locale 比较结果而不是字符串 :)

最终结果错误已修复,为整个字符串添加了比较(不正确的停止或递归循环):

String.prototype.MylocaleCompare = function (right, idx){
idx = (idx == undefined) ? 0 : idx++;

var run = right.length <= this.length ? (idx < right.length - 1 ? true : false) : (idx < this.length - 1 ? true : false);


if (!run)
{
if (this[0].localeCompare(right[0]) == 0)
{
return this.localeCompare(right);
}
else
{
return this[0].localeCompare(right[0])
}
}

if(this.localeCompare(right) != this[0].localeCompare(right[0]))
{
var myLeft = this.slice(1, this.length);
var myRight = right.slice(1, right.length);
if (myLeft.localeCompare(myRight) != myLeft[0].localeCompare(myRight[0]))
{
return myLeft.MylocaleCompare(myRight, idx);
}
else
{
if (this[0].localeCompare(right[0]) == 0)
{
return myLeft.MylocaleCompare(myRight, idx);
}
else
{
return this[0].localeCompare(right[0])
}
}
}
else
{
return this.localeCompare(right);
}

}

关于javascript - localeCompare 在对带有前导变音字符的单词进行排序时显示不一致的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28966476/

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