In my program when I'm using
line.replaceAll("(", "_");
I got a RuntimeException:
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.accept(Unknown Source)
at java.util.regex.Pattern.group0(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.replaceAll(Unknown Source)
at Processing.processEarly(Processing.java:95)
at Processing.main(Processing.java:34)
Is there any reason? How can we avoid it?
解决方案
The first argument to string.replaceAll is a regular expression, not just a string. The opening left bracket is a special character in a regex, so you must escape it:
line.replaceAll("\\(", "_");
Alternatively, since you are replacing a single character, you could use string.replace like so:
line.replace('(', '_');