У меня есть 2 струны, которые меня очень удручают. Они содержат, aparently, тот же текст, но при их сравнении Java не говорит об этом.Одинаковые строки
Текст «La Coruña». Одна строка возвращается через Google Geocoder, а другая - жестко запрограммирована мной.
Я попытался equals()
, который возвращает ложь, equalsIgnoreCase()
который возвращает ложь, который возвращает ложь, compareTo()
который не возвращает 0 (будучи 0, что равно).
Затем я сбрасывал строки в байтовые массивы с помощью метода getBytes("UTF-8")
. Опять же, equals()
с возвратом false, Arrays.compare(array1, array2)
false тоже.
Arrays.compare()
возвращает false, когда длина каждого массива отличается или когда значение в одном и том же положении отличается. Поэтому я напечатал как массивы, так и ... сюрприз !! Содержимое было другим.
Array1 [76, 97, 32, 67, 111, 114, 117, -61, -79, 97]
Array2 [76, 97, 32, 67, 111, 114, 117, -47 , -127, 97]
Вопрос: ПОЧЕМУ это происходит, и как сделать их равными, чтобы я мог успешно сравнивать. Я предполагаю, что Google использует какую-то кодировку («La Coruña» содержит - char), которая отличается от другой жестко закодированной строки.
Пожалуйста, дайте мне некоторую помощь
Спасибо заранее.
Это принципиально разные строки, в соответствии с ASCII. Первый запускает «La», второй - «A». (Один - испанский, другой - галисийский.) –
Что такое «-» для? – realUser404
@OliverCharlesworth Woah! Вы очень похожи, но это была копия опечатки из журналов ошибок. Сожалею! Я обновил свой вопрос. На самом деле контент отличается, но длина такая же. – Alberto