string.compareTo (anOtherString); - PullRequest
       13

string.compareTo (anOtherString);

0 голосов
/ 11 мая 2011

Я хочу сравнить две строки с методом string.compareTo (anOtherString); и это доставляет мне странное значение ... (мне нужно целочисленное значение от 0 до 57 для каждой строки) В следующем примере первая строка содержит 2, а вторая 1.

    System.out.println("And".compareTo("A"));
    System.out.println("Bus".compareTo("A"));

Я ожидал, что первая строка - это 1, а вторая - 2 ... Кто-нибудь может мне это объяснить?

Есть ли лучшая возможность сделать это?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 11 мая 2011

Прочитайте документацию для String.compareTo () :

Если они имеют разные символы в одной или нескольких позициях индекса ... CompareTo возвращаетразница двух символьных значений в позиции k в двух строчках.Если нет индексной позиции, в которой они различаются ... compareTo возвращает разницу длин строк.

1 голос
/ 11 мая 2011

Если результат> 0, то первая строка больше, лексикографически по кодовой единице UTF-16.Если результат <0, то первая строка меньше, лексикографически. </p>

Вы не должны полагаться на фактическое значение, кроме знака и того, равно ли оно нулю.

От http://download.oracle.com/javase/1,5.0/docs/api/java/lang/String.html#compareTo(java.lang.String)

Возвращает : значение 0, если строка аргумента равна этой строке;значение меньше 0, если эта строка лексикографически меньше строкового аргумента;и значение больше 0, если эта строка лексикографически больше строкового аргумента.

Кстати, если вы хотите сравнение с учетом языка, например, если вы сравниваете текст, читаемый человеком, используйте java.text.Collator.compare вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...