簡體   English   中英

JavaScript localeCompare() 返回的結果與 Java compareTo() 不同

[英]JavaScript localeCompare() returns different result than Java compareTo()

我想要實現的是同步這兩個函數的結果。 這些方法返回數字,指示引用字符串在排序順序中是在給定字符串之前還是之后,或者與給定字符串相同。

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM