如何解决从字符串中删除“空”字符
可能是NULL字符,由表示\0
。您可以通过摆脱它String#trim()
。
要确定确切的代码点,请执行以下操作:
for (char c : string.tochararray()) {
System.out.printf("U+%04x ", (int) c);
}
然后,您可以在此处找到确切的字符。
根据更新:
有人知道一种只包含有效字符范围而不是排除95%的UTF8范围的方法吗?
您可以借助正则表达式来做到这一点。请参阅此处的@polygenelubricants 答案以及此答案。
另一方面,您也可以从根本上解决问题,而不是解决问题。更新文件以摆脱BOM表标记,这是一种区分UTF-8文件与当今不值钱的文件的传统方法,或者是使用Reader
可识别并跳过BOM表的文件。也看到这个问题。
解决方法
我使用的框架会不时返回格式错误的字符串,其中包含“空”字符。
例如,“ 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 == ''){
//
}
显然,字符串..出了点问题,但是我无法更改正在使用的框架,也无法等待他们修复它(如果这是其框架内的错误)。我需要处理此字符串并将其清理。
有任何想法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。