当前位置: 首页 > 面试题库 >

从字符串中删除“空”字符

毕衡
2023-03-14
问题内容

我使用的框架会不时返回格式错误的字符串,其中包含“空”字符。

例如,“ foobar”表示为:[,f,o,o,b,a,r]

第一个字符不是空格(’‘),因此System.out.printlin()将返回“ foobar”而不是“
foobar”。但是,String的长度是7,而不是6。显然,这使大多数String方法(等于,拆分,子字符串等)变得无用。有没有办法从字符串中删除空字符?

我试图建立一个像这样的新字符串:

StringBuilder sb = new StringBuilder();
for (final char character : malformedString.toCharArray()) {
  if (Character.isDefined(character)) {
    sb.append(character);
  }
}
sb.toString();

不幸的是,这不起作用。与以下代码相同:

StringBuilder sb = new StringBuilder();
for (final Character character : malformedString.toCharArray()) {
  if (character != null) {
    sb.append(character);
  }
}
sb.toString();

我也无法检查像这样的空字符:

   if (character == ''){
     //
   }

显然,字符串..出了点问题,但是我无法更改正在使用的框架,也无法等待他们修复它(如果这是其框架内的错误)。我需要处理此字符串并将其清理。

有任何想法吗?


问题答案:

可能是NULL字符,由表示\0。您可以通过摆脱它String#trim()

要确定确切的代码点,请执行以下操作:

for (char c : string.toCharArray()) {
    System.out.printf("U+%04x ", (int) c);
}

然后,您可以在此处找到确切的字符。

更新: 根据更新:

有人知道一种只包含有效字符范围而不是排除95%的UTF8范围的方法吗?

您可以借助正则表达式来做到这一点。请参阅此处的@polygenelubricants
答案以及此答案。

另一方面,您也可以从根本上解决问题,而不是解决问题。更新文件以摆脱BOM表标记,这是一种区分UTF-8文件与当今不值钱的文件的传统方法,或者是使用Reader可识别并跳过BOM表的文件。也看到这个问题。



 类似资料:
  • 问题内容: 我想从python中的字符串列表中删除所有空字符串。 我的想法如下: 有没有更多的Python方式可以做到这一点? 问题答案: 我会用: Python 3从返回一个迭代器,因此应包装在对的调用中

  • 问题内容: 我得到的任务是从文本文件或字符串中删除所有非数字字符,包括空格,然后在旧字符旁边打印新结果,例如: 之前: 后: 由于我是初学者,所以我不知道从哪里开始。请帮忙 问题答案: 最简单的方法是使用正则表达式

  • 问题内容: 我有一个像这样的字符串: 我想删除字符串中的空格。我试过了,但这只删除了整个字符串前后的空格。我也尝试过,但后来=也被删除了。 如何使用以下方法实现字符串: 问题答案: 删除所有空格和不可见字符(例如,)。 并产生相同的结果。 第二个正则表达式比第一个正则表达式快20%,但是随着连续空格数量的增加,第一个正则表达式的性能优于第二个正则表达式。 如果不直接使用,则将值分配给变量:

  • 本文向大家介绍如何从Python的字符串列表中删除空字符串?,包括了如何从Python的字符串列表中删除空字符串?的使用技巧和注意事项,需要的朋友参考一下 您可以使用过滤器过滤掉空字符串。filter的第一个参数是lambda,它将告诉您字符串是否为空。您可以将此lambda传递为None,bool,len或检查字符串是否为空的函数。您可以通过以下几种方式进行检查: 请单击下面的链接以查看带有简单

  • 问题内容: 我正在考虑使用删除字符串中的某些字符。目前尚不清楚将要删除哪些字符(即我想删除哪些字符),但是我会假定任何字符都是有效的(例如和之类的东西,等等)。 我遇到了http://www.java-tips.org/java-se-tips/java.lang/strip-certain-characters- from-a-string.html, 但是肯定有比遍历每个字符更好的方法… 有什

  • 问题内容: 我在从字符串中删除非utf8字符时出现问题,这些字符无法正确显示。像这样的字符0x97 0x61 0x6C 0x6F(十六进制表示) 删除它们的最佳方法是什么?正则表达式还是其他? 问题答案: 使用正则表达式方法: 它搜索UTF-8序列,并将其捕获到组1中。它还与无法标识为UTF-8序列的一部分的单个字节匹配,但不捕获这些字节。替换是捕获到组1中的任何内容。这将有效删除所有无效字节。