作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在最新的 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/
我想解析以下 xml 结构: 为了解析这个 element name="?????? 结构,我按以下方式使用 XPath: XPath xPath
我在 OSX 机器上运行 Python 2.7。我正在尝试在 smb 共享上执行 os.walk。 for root, dirnames, filenames in os.walk("./test")
我是一名优秀的程序员,十分优秀!