从android字符串删除空字符

问题描述:

在我的android项目中,我想从文件中读取数据结构。一个字段假设'姓名',最多有32个字符。大多数时间'名称'字段包含小于最大限制。一些不需要的字符(我认为'空')充满了数据。我用'修剪'方法删除,但没有发生。我只需要有效的数据进行处理,我该如何解决这个问题?从android字符串删除空字符

+0

存储中删除无效数据作为XML或JSON和使用android解析器来读取它。 – njzk2 2011-12-28 11:41:32

+0

数据来自硬件系统,其格式是原始的 – Riskhan 2011-12-28 11:44:35

使用正则表达式替换非打印字符。

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

您的解决方案最简单,并且正在运行,谢谢 – Riskhan 2011-12-28 11:47:15

如果字符0的字符串末尾附加,只要找到在串中的第一指标,串到这个指数:

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

如果你有一个完全为null的名字字段,只需检查字符串== null。

如果要分析一个字符串,其中包含例如空间仅仅指刚使用:

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

这可以用于所有其他字符。请注意,您必须为此使用RegEx。

+1

您的示例演示了他的代码中可能存在的问题。字符串是不可变的,所以你应该将replaceAll的结果赋给某个String。 – MByD 2011-12-28 12:01:56

检查字符的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