我一直试图将以下字符串中的摄氏度符号删除几个小时。我查看了之前的帖子,我看到/ u2103是它的unicode表示。尽管试图删除那个字符串,我仍然没有运气。这就是我现在所拥有的:
String temp = "Technology=Li-poly;Temperature=23.0 <degree symbol>C;Voltage=3835";
StringBuilder filtered = new StringBuilder(temp.length());
for (int i = 0; i < temp.length(); i++) {
char test = temp.charAt(i);
if (test >= 0x20 && test <= 0x7e) {
filtered.append(test);
}
}
temp = filtered.toString();
temp.replaceAll(" ", "%20");
结果字符串如下所示: 技术= Li-poly;温度= 23.0℃;
我也试过
temp.replaceAll("\\u2103", "");
temp.replaceChar((char)0x2103, ' ');
但这一切都无效。
我目前的问题是过滤字符串的函数留下了一个空格,但是对replaceAll(“”,“%20”)的调用似乎并没有识别出特定的空格。 ReplaceAll将用%20替换其他空格。
答案 0 :(得分:4)
这是一个问题:
temp.replaceAll(" ", "%20");
您正在调用replaceAll
但从不使用结果。字符串是不可变的 - 任何看起来的方法都在改变内容,实际上返回不同的字符串。你想要:
temp = temp.replaceAll(" ", "%20");
话虽如此,目前尚不清楚为什么要尝试更换空间,也不知道你的结果字符串有什么问题。
您的其他temp.replaceAll
和temp.replaceChar
来电也遇到了同样的问题。
你试图直接替换角色也会失败,因为你正在逃避反斜杠 - 你真的想要:
temp = temp.replace("\u2103", "");
请注意使用replace
代替replaceAll
- 后者使用正则表达式,这里根本不需要使用。
答案 1 :(得分:0)
也许您可以利用Character.isWhiteSpace()功能。