如何从字符串中删除摄氏度符号(java)
问题描述:
我一直试图从几秒钟内从下面的字符串中删除度摄氏度符号。我查看了之前的帖子,我发现/ u2103是它的Unicode代表。尽管试图删除该字符串,但我仍然没有运气。这是我现在有:如何从字符串中删除摄氏度符号(java)
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");
结果字符串看起来是这样的: 技术=锂聚合物;温度= 23.0Ç;
我也试过
temp.replaceAll("\\u2103", "");
temp.replaceChar((char)0x2103, ' ');
但这一切工作。
我目前的问题是过滤字符串的函数会留下一个空白区域,但调用replaceAll(“”,“%20”)似乎无法识别该特定空间。 ReplaceAll将用%20替换其他空格。
答
这是一个问题:
temp.replaceAll(" ", "%20");
你打电话replaceAll
但从来没有使用的结果。字符串是不可变的 - 任何方法看起来像它改变的内容其实是返回不同的字符串作为结果。你想:
temp = temp.replaceAll(" ", "%20");
话虽如此,但为什么你想在所有的替代空间,也没有什么错你得到的字符串目前尚不清楚。
您与其他temp.replaceAll
和temp.replaceChar
调用有相同的问题。
为你逃避反斜杠您试图直接替换的字符也将失败 - 你真的想:
temp = temp.replace("\u2103", "");
注意使用的replace
代替replaceAll
- 后者使用正则表达式,这有这里根本不需要使用。
+0
谢谢!这工作!我不需要双反斜杠,我应该使用替换,而不是replaceAll。 – user836200
你确定它是'\ u2103'而不是'\ u00B0'吗? – corsiKa