【问题标题】:How to remove the degrees celsius symbol from a string (java)如何从字符串中删除摄氏度符号(java)
【发布时间】:2011-08-31 13:29:27
【问题描述】:

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

生成的字符串如下所示: 技术=锂聚合物;温度=23.0 C;

我也试过了

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

但这些都不起作用。

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

【问题讨论】:

  • 你确定是\u2103 而不是\u00B0

标签: java temperature replaceall


【解决方案1】:

这是一个问题:

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

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

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

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

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

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

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

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

【讨论】:

  • 谢谢!这行得通!我不需要双反斜杠,我应该使用 replace,而不是 replaceAll。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 2015-09-14
    • 1970-01-01
    • 2017-03-19
    相关资源
    最近更新 更多