private String unusedDigits = new String("0123456789*#");
unusedDigits = unusedDigits.replaceFirst("1", "");
//...
unusedDigits = unusedDigits.replaceFirst("*", ""); // <--- problem
是Java初学者。将replaceFirst()
与"*"
一起使用时,为什么会遇到问题?它涉及一些不同的代码流(与某些synchronized
相关)。如果我评论那个陈述,那么事情就好了!
答案 0 :(得分:2)
你应该转义*字符,因为它是一个特殊的正则表达式字符:
unusedDigits = unusedDigits.replaceFirst("\\*", "");
答案 1 :(得分:2)
在replaceFirst()
中,第一个参数是正则表达式。您可以改为使用Pattern.quote("*")
:
unusedDigits = unusedDigits.replaceFirst(Pattern.quote("*"), "");
答案 2 :(得分:1)
replaceFirst需要正则表达式作为参数。 '*'是正则表达式中的特殊字符,因此您应该使用
unusedDigits = unusedDigits.replaceFirst("\\*", "");
替换它。
答案 3 :(得分:1)
replaceFirst
采用正则表达式作为它的第一个参数。由于*
是一个特殊角色,你需要逃脱它。
试试这个:
unusedDigits = unusedDigits.replaceFirst("\\*", "");
答案 4 :(得分:1)
replaceFirst参数是一个正则表达式,并且*在正则表达式中具有特定含义,因此要将正则表达式部分转换为
unusedDigits = unusedDigits.replaceFirst("\\*", "");