【发布时间】:2011-03-24 17:11:25
【问题描述】:
我正在使用一个框架,它不时返回带有“空”字符的格式错误的字符串。
“foobar”例如表示为: [,f,o,o,b,a,r]
第一个字符不是空格 (' '),因此 System.out.printlin() 将返回“foobar”而不是“foobar”。然而,String 的长度是 7 而不是 6。显然这使得大多数 String 方法(equals、split、substring、..)无用。有没有办法从字符串中删除空字符?
我尝试像这样构建一个新字符串:
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 == ''){
//
}
显然 String .. 有问题,但我无法更改我正在使用的框架或等待他们修复它(如果这是他们框架中的错误)。我需要处理这个字符串并清理它。
有什么想法吗?
【问题讨论】:
-
那是什么?尝试写出每个字符的 unicode 编号(只需将 char 转换为 int)。
-
这可能是 U+FEFF 字符吗?那么它可能是存储为 UTF-* 的文件中的字节顺序标记