【问题标题】:removing null chars from android string从android字符串中删除空字符
【发布时间】:2011-12-28 11:28:46
【问题描述】:

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

【问题讨论】:

  • 将您的数据存储为 xml 或 json 并使用 android 解析器来读取它。
  • 数据来自硬件系统,它们的格式是原始的

标签: java android string


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 使用 toCharArray 而不是 getBytes。在任何使用 UTF-8 作为默认编码且任何字符 > 127 的平台上,您的解决方案都将附加不正确的值。
    【解决方案3】:

    如果char 0被附加在String的末尾,只需在String中找到它的第一个索引,并将子字符串直到该索引:

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

    【讨论】:

      【解决方案4】:

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

      如果你想解析一个字符串,其中包含例如空格,请使用:

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

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

      【讨论】:

      • 您的示例演示了他的代码中可能存在的问题。 string 是不可变的,因此您应该将 replaceAll 的结果分配给某个 String。
      猜你喜欢
      • 2019-06-14
      • 2011-03-24
      • 1970-01-01
      • 2011-09-21
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 2014-07-04
      • 1970-01-01
      相关资源
      最近更新 更多