2013-08-20 2 views
0

Всякий раз, когда я хочу разобрать строку "0" в Java до 0 (int), она выдает InvalidInt-Error.
Однако струны, такие как "1", "2" и т.п. работа.parseInt: invalid int "0"

ОБНОВЛЕНИЕ: Другие номера не работают.

Я извлекаю исходный код HTML PHP-файла с моей веб-страницы, и на этой веб-странице отображается только один номер.

Код:

String[] result = sourceCode.trim().split("<br>"); 
for (int i = 0; i < result.length; i++) 
{ 
    result[i] = result[i].trim().replace("\n", "").replace("\r", ""); 
} 

    if (Integer.parseInt(result[0]) > 0) 
    { 
     //Do Something 
    } 

Error Message

ответ

3

С информацией, содержащейся в комментариях ниже вопроса, то получается, что у вас есть Unicode Character 'ZERO WIDTH NO-BREAK SPACE' (U+FEFF) несколько раз в начале вашей строки. Вы можете сделать следующее, чтобы удалить его:

final String ZERO_WIDTH_NO_BREAK_SPACE = "\uFEFF"; 
String good = result[0].replace(ZERO_WIDTH_NO_BREAK_SPACE, ""); 

Кроме того, есть один TAB скрытые между ними всеми этими символами. Избавьтесь от этого с помощью

good = good.replaceAll("\\s+", ""); 
+0

Но если значение действительно '' 1 "' с некоторыми дополнительными пробелами с обеих сторон, это не сделает ничего, что вызов 'trim' не делает. –

+0

@DavidWallace: см. Мой обновленный ответ. – jlordo

+0

Кстати, может быть уместным, что U + FEFF является меткой юникодного байта (BOM), используемой для указания порядка байтов текста UTF-16 или UTF-32, а иногда и для указания кодировки других кодированных в Юникоде текст. – ruakh

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