Why do i get \"AAAAAAAAA\" instead of \"1A234A567\" from following Code:
String myst = \"1.234.567\";
String test = myst.replaceAll(\".\", \"A\");
System.o
Try this:
String test = myst.replace(".", "A");
The difference: replaceAll() interprets the pattern as a regular expression, replace() interprets it as a string literal.
Here's the relevant source code from java.lang.String
(indented and commented by me):
public String replaceAll(String regex, String replacement) {
return Pattern.compile(regex)
.matcher(this)
.replaceAll(replacement);
}
public String replace(CharSequence target, CharSequence replacement) {
return Pattern.compile(
target.toString(),
Pattern.LITERAL /* this is the difference */
).matcher(this)
.replaceAll(
Matcher.quoteReplacement(
/* replacement is also a literal,
not a pattern substitution */
replacement.toString()
));
}
Reference: