Why do i get "AAAAAAAAA" instead of "1A234A567" from following Code:
String myst = "1.234.567";
String test = myst.replaceAll(".", "A");
System.out.println(test);
Any Idea?
Why do i get "AAAAAAAAA" instead of "1A234A567" from following Code:
String myst = "1.234.567";
String test = myst.replaceAll(".", "A");
System.out.println(test);
Any Idea?
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: