2011-12-28 3 views
2

В моем проекте андроида, я хочу прочитать структуру данных из файла. Поле предполагает «имя», которое имеет максимум 32 символа. В большинстве случаев поле «имя» содержит максимальный предел. Некоторые нежелательные символы (я думаю, «null») заполнены данными. Я использовал метод «trim» для удаления, но ничего не произошло. Мне нужны только достоверные данные для обработки, как я могу решить эту проблему?удаление пустых символов из строки android

+0

магазина характер ваши данные, как XML или JSON и используйте синтаксические анализаторы для чтения. – njzk2

+0

данные из аппаратной системы, их формат необработанный – Riskhan

ответ

3

Используйте регулярное выражение для замены непечатаемых символов.

String string=line.replaceAll("[^\\p{Print}]",""); 
+0

ваше решение прост и работает, спасибо – Riskhan

0

Если символ 0 добавляются в конце строки, просто найти свой первый индекс в строках и подстрока до этого показателя:

int nullCharIndex = s.indexOf((char) 0); 
if (nullCharIndex >= 0) { 
    s = s.substring(0, nullCharIndex); 
} 
-1

Если у вас есть поле имени, полное значение null, просто проверьте, является ли строка == null.

Если вы хотите, чтобы разобрать одну строку, которая содержит, например, пространств: использование этого нужно просто

String string = "a b c d"; 
string.replaceAll(" ",""); 

Это может быть использовано для любого другого полукокса. Имейте в виду, что для этого вам нужно использовать RegEx.

+1

Ваш пример демонстрирует, что может быть проблемой в его коде. строка является неизменной, поэтому вы должны назначить результат replaceAll некоторой String. – MByD

1

Проверьте больше 0 значение ASCII символа, чтобы проверить, является ли нулевой

Как удалить нуль из андроида строки

String str = "abc def"; 
      StringBuffer sb = new StringBuffer(); 
      byte[] byteArray = str.getBytes(); 
      for(byte bytedata:byteArray){ 
       if(bytedata>0){ 
        sb.append((char)bytedata); 
       } 
      } 
      str = sb.toString(); 
      System.out.println("..."+str); 
+1

использовать toCharArray, а не getBytes. На любой платформе с использованием UTF-8 в качестве кодировки по умолчанию с любыми символами> 127 ваше решение добавит неправильные значения. – njzk2