我试图实现的是同步这两个功能的结果。这些方法返回数字,该数字指示参考字符串是在排序顺序之前还是之后还是与给定字符串相同。
JavaScript localeCompare有许多参数需要设置,但与我尝试过的没什么关系。
**Java returns**: **JavaScript returns**:
Sensor Sensor
SensorDus Sensor DUS
SensorEnv Sensor E
Sensor DUS SensorDUS
Sensor E Sensor Env
看起来这两种方法的区别在于它们如何返回数字。如果参考字符串出现在比较字符串之前,则为负数;否则为负。如果参考字符串出现在比较字符串之后,则为正;否则为正。如果它们相等,则为0。
如果有可能,有什么主意吗?
我的解决方案。我没有使用localeCompare(),而是将Java compareTo()重写为JavaScript方法。 java方法为空格返回正数(较高),而不是在JavaScript中没有空格的字符串。
localCompareAsInJava: function(t1,t2)
{
var len1 = t1.length;
var len2 = t2.length;
var lim = Math.min(t1.length, t2.length);
var v1 = t1;
var v2 = t2;
var k = 0;
while(k < lim)
{
var c1 = v1[k];
var c2 = v2[k];
if(c1 != c2)
{
if(c1.charCodeAt(0) == 32 )
{
var charWithSpace = c1.charCodeAt(0) + c2.charCodeAt(0);
return charWithSpace;
}
else{
return c1.charCodeAt(0) - c2.charCodeAt(0);
}
}
k++;
}
return len1 - len2;
}