我的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 ="¼"
test2 ="½"
test3 ="½"???????????
有人可以解释为什么test3变成"½"?
你正在使用replaceAll()
,它采用正则表达式.在regex-land中,.
意思是"任何角色".replace()
改为使用,它适用于文字字符串.
问题是正则表达式.
意味着任何字符.replaceAll
将正则表达式作为参数,因此您应该使用其他方法,例如replace
.
因为replaceAll
需要正则表达式.这意味着.
被解释为一个通配符也相匹配7
,这样.5
匹配75
.您可以使用正则表达式进行转义,\
但请注意,这也是一个字符串,这意味着您必须转义两次:因此replaceAll("\\.5", "½")
将执行您想要的操作.