从Android字符串中删除空字符

3

在我的安卓项目中,我想要从文件中读取一个数据结构。其中一个字段名为“name”,最多有32个字符。大部分情况下,“name”字段的内容少于最大限制。一些不需要的字符(我认为是'null')被填充了数据。我使用了“trim”方法来去除它们,但什么也没有发生。我只需要有效数据进行处理,该如何解决这个问题?


将您的数据存储为XML或JSON,并使用Android解析器来读取它。 - njzk2
数据来自硬件系统,其格式为原始。 - Riskhan
4个回答

9

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

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

1

检查字符的ASCII值是否大于0,以检查字符是否为空

如何从Android字符串中删除null

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

0
如果在字符串的末尾附加了 char 0,请只需在字符串中查找其第一个索引,并截取到该索引:
int nullCharIndex = s.indexOf((char) 0);
if (nullCharIndex >= 0) {
    s = s.substring(0, nullCharIndex);
}

-2
如果您有一个完全为空的名称字段,只需检查字符串是否为null。
如果您想解析包含空格的一个字符串,例如,请使用:
String string = "a b c d";
string.replaceAll(" ","");

这可以用于任何其他字符。请注意您必须使用RegEx。


1
你的例子展示了他代码中可能存在的问题。String是不可变的,所以你应该将replaceAll的结果赋值给某个String。 - MByD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接