字符串替换所有(“3/4”) 在 java 中

2022-09-02 11:40:41

我的Java代码中有非常奇怪的错误,无法弄清楚出了什么问题。

假设我有这个代码:

private void test()
{
    String test1 = replace("1.25");
    String test2 = replace("1.5");
    String test3 = replace("1.75");
}

private String replace(String s)
{
     s = s.replaceAll(".25", "¼");
     s = s.replaceAll(".5", "½");
     s = s.replaceAll(".75", "¾");
     return s;
}

然后结果将是:

test1 = “1/4”

test2 = “1/2”

test3 = “1/2” ??????????

有人可以解释为什么test3变成“1/2”吗?


答案 1

您正在使用 replaceAll(),它采用正则表达式。在正则表达式中,表示“任何字符”。请改用 replace(),它适用于文本字符串。.


答案 2

因为采用正则表达式。该均值被解释为一个通配符,该通配符也匹配,因此匹配 。你可以在正则表达式中使用转义,但请注意,这也是一个字符串,这意味着你将不得不转义两次:所以会做你想要的。replaceAll.7.575\replaceAll("\\.5", "½")