如何从字符串中删除摄氏度符号(java)

时间:2011-08-31 05:23:47

标签: java temperature replaceall

我一直试图将以下字符串中的摄氏度符号删除几个小时。我查看了之前的帖子,我看到/ 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替换其他空格。

2 个答案:

答案 0 :(得分:4)

这是一个问题:

temp.replaceAll(" ", "%20");

您正在调用replaceAll但从不使用结果。字符串是不可变的 - 任何看起来的方法都在改变内容,实际上返回不同的字符串。你想要:

temp = temp.replaceAll(" ", "%20");

话虽如此,目前尚不清楚为什么要尝试更换空间,也不知道你的结果字符串有什么问题。

您的其他temp.replaceAlltemp.replaceChar来电也遇到了同样的问题。

你试图直接替换角色也会失败,因为你正在逃避反斜杠 - 你真的想要:

temp = temp.replace("\u2103", "");

请注意使用replace代替replaceAll - 后者使用正则表达式,这里根本不需要使用。

答案 1 :(得分:0)

也许您可以利用Character.isWhiteSpace()功能。