【发布时间】:2017-05-02 06:05:08
【问题描述】:
我有一个包含反斜杠字符 (\) 的字符串值。我的目标是用字符(_)替换它。
我按照这个问题How to remove the backslash in string using regex in Java? 中提供的解决方案做了以下操作
String x = "2\5\2017";
x = x.replaceAll("\\\\", "_");
但我总是将 (27) 作为 x 的值。注意:2 到 7 之间有未知字符。在控制台中,我可以看到它是一个小方块。
【问题讨论】:
-
两种解决方案都试过了吗? (
replaceAll和replace)。 PS:您也需要在x中转义\->String x = "2\\5\\2017"; -
在字符串文字中,反斜杠是一个转义字符,这意味着
"2\5\2017"被解释为4个字符,其中中间两个具有ASCII值5和201(作为八进制数字) .您需要在字符串文字中转义反斜杠:"2\\5\\2017" -
@AxelH 是的,我做了 replace 和 replaceAll ,得到了相同的结果。字符串值像这样来自数据库,添加双斜杠不是硬编码值。
-
您的问题不在
replace- 而是在原始字符串中。 (其他人也提到了这一点)。要确认这一点 - 只需尝试打印原始字符串 - 不应用任何替换...看看会发生什么。 -
@Salman 您能否确认您在示例中向我们展示的值是
System.out.print(x);的结果如果是这样,那么您的字符串是正确的,但是因为您有一个输出@ 987654338@ 那我猜不是。然后您应该检查您的方法以获取该值,因为问题来自 DB 或 JDBC。