java中的字符串replaceAll("¾")

Joh*_*dli 19 java regex string replaceall

我的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;
}
Run Code Online (Sandbox Code Playgroud)

然后结果将是:

test1 ="¼"

test2 ="½"

test3 ="½"???????????

有人可以解释为什么test3变成"½"?

ars*_*jii 27

你正在使用replaceAll(),它采用正则表达式.在regex-land中,.意思是"任何角色".replace()改为使用,它适用于文字字符串.

  • 或者使用[`Pattern#quote`](http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#quote(java.lang.String)). (7认同)

Mar*_*ing 8

因为replaceAll需要正则表达式.这意味着.被解释为一个通配符也相匹配7,这样.5匹配75.您可以使用正则表达式进行转义,\但请注意,这也是一个字符串,这意味着您必须转义两次:因此replaceAll("\\.5", "½")将执行您想要的操作.

  • 谢谢你的回复和解释! (2认同)

Ada*_*old 5

问题是正则表达式.意味着任何字符.replaceAll将正则表达式作为参数,因此您应该使用其他方法,例如replace.

  • 我想你需要吃一个快乐的药丸:) (5认同)
  • @Whomever downvoted:关心解释? (3认同)