JavaScript localeCompare () возвращает результат, отличный от Java compareTo () - PullRequest
0 голосов
/ 19 февраля 2020

То, чего я пытаюсь добиться, - это синхронизировать результаты этих двух функций. Эти методы возвращают число, указывающее, идет ли строка ссылки до или после или совпадает с заданной строкой в ​​порядке сортировки.

JavaScript localeCompare имеет много параметров, которые нужно установить, но ничего из того, что я пробовал, не сработало ,

**Java returns**:      **JavaScript returns**:
Sensor             Sensor
SensorDus          Sensor DUS
SensorEnv          Sensor E
Sensor DUS         SensorDUS
Sensor E           Sensor Env

Похоже, что разница между этими двумя методами заключается в том, как они возвращают числа. Отрицательное число, если строка сравнения находится перед строкой сравнения; положительный, если после строки сравнения встречается ссылочная строка; 0, если они эквивалентны.

Есть идеи, если это как-то возможно?

1 Ответ

0 голосов
/ 20 февраля 2020

Мое решение проблемы. Вместо использования 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;
}
...