2014-09-09 4 views
0

У меня проблема с сравнением строк, в то время как некоторые слова возвращают корректный результат других просто нет ..сравнение строк не работает правильно

for (int s = 0; s < subjects.getLength(); s++) { 
    Element subject = (Element) subjects.item(s); 
    String sub = subject 
        .getElementsByTagName("name").item(0) 
        .getTextContent(); 
    Log.d("Subject", getSubject() + "!A"); 
    Log.d("Subject", sub + "!B"); 
    Log.d("Subject", "equalsIC: " + String.valueOf(getSubject().equalsIgnoreCase(sub))); 
    Log.d("Subject", "Contains: " + String.valueOf(getSubject().contains(sub))); 
    Log.d("Subject", "Equals: " + String.valueOf(getSubject().equals(sub))); 
    Log.d("Subject", "ContentEqu: " + String.valueOf(getSubject().contentEquals(sub))); 
    Log.d("Subject", "Length A: " + String.valueOf(getSubject().length()) + "; Length B: " + String.valueOf(sub.length())); 
    if (getSubject().equalsIgnoreCase(subject 
       .getElementsByTagName("name").item(0) 
       .getTextContent())) { 
     Log.d("Subject", getSubject() + "Success !C"); 

Метод getSubject возвращает строку. Хотя это работает идеально подходит для "BK G3":

D/Subject﹕ BK G3!A 
D/Subject﹕ BK G3!B 
D/Subject﹕ equalsIC: true 
D/Subject﹕ Contains: true 
D/Subject﹕ Equals: true 
D/Subject﹕ ContentEqu: true 
D/Subject﹕ Length A: 5; Length B: 5 
D/Subject﹕ BK G3Success !C 

Он просто терпит неудачу с "D" G4:

D/Subject﹕ D  G4!A 
D/Subject﹕ D G4!B 
D/Subject﹕ equalsIC: false 
D/Subject﹕ Contains: false 
D/Subject﹕ Equals: false 
D/Subject﹕ ContentEqu: false 
D/Subject﹕ Length A: 5; Length B: 5 

Я попытался его с sub.trim(), но ничего не изменилось ..

Заранее спасибо.

Редактировать

Debugging дает мне следующую информацию:

sub = ([email protected])"D G4" 
value = {char[5]@830092913560} 
hashCode = 0 
offset = 0 
count = 5 

((Activity_Add)this).subject = [email protected])"D G4" 
value = {char[59]@830080636976} 
hashCode = 0 
offset = 6 
count = 5 
+0

Вы пытались отлаживать каждую строку, чтобы увидеть байт по содержимому байта? –

+0

От того, что я вижу, они на самом деле разные. Глядя на html из вашего сообщения, я вижу, что первая строка - 'D   G4', а вторая -' D G4'. –

+0

Что это за 59 символов, которые есть у второй строки? –

ответ

0

Использование

sub.replaceAll("\\s+","")

вместо

sub.trim();

+0

ничего не меняет, журнал остается тем же ... – Juckie

+0

Извините, но я просто забыл назначить его 'sub' – Juckie

+0

Я заглянул, помог. –

Смежные вопросы