2011-12-28 205 views
2

在我的android項目中,我想從文件中讀取數據結構。一個字段假設'姓名',最多有32個字符。大多數時間'名稱'字段包含小於最大限制。一些不需要的字符(我認爲'空')充滿了數據。我用'修剪'方法刪除,但沒有發生。我只需要有效的數據進行處理,我該如何解決這個問題?從android字符串刪除空字符

+0

存儲中刪除無效數據作爲XML或JSON和使用android解析器來讀取它。 – njzk2 2011-12-28 11:41:32

+0

數據來自硬件系統,其格式是原始的 – Riskhan 2011-12-28 11:44:35

回答

3

使用正則表達式替換非打印字符。

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

您的解決方案最簡單,並且正在運行,謝謝 – Riskhan 2011-12-28 11:47:15

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 2011-12-28 12:01:56

1

檢查字符的ASCII值是否大於0,檢查字符是否爲空

如何從Android的字符串

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 2011-12-28 12:36:50