0

几个小时以来,我一直在尝试从以下字符串中删除摄氏度符号。我查看了以前的帖子,发现 /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");

结果字符串如下所示: Technology=Li-poly;Temperature= 23.0 C ;

我也试过

temp.replaceAll("\\u2103", "");
temp.replaceChar((char)0x2103, ' ');

但这些都不起作用。

我当前的问题是过滤字符串的函数留下了一个空格,但是对 replaceAll(" ", "%20") 的调用似乎无法识别该特定空间。ReplaceAll 将用 %20 替换其他空格。

4

2 回答 2

4

这是一个问题:

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

你打电话replaceAll但从不使用结果。字符串是不可变的——任何看起来改变内容的方法实际上都返回了不同的字符串作为结果。你要:

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

话虽如此,尚不清楚您为什么要尝试替换空格,也不知道结果字符串有什么问题。

您的其他电话temp.replaceAlltemp.replaceChar电话也有同样的问题。

当您转义反斜杠时,您尝试直接替换字符也会失败 - 您真的想要:

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

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

于 2011-08-31T05:27:25.753 回答
0

也许您可以利用Character.isWhiteSpace()函数。

于 2011-08-31T05:29:27.720 回答