The following code will set str to “testss”
String str = "test".replaceAll("(.*)$","$1s");
Where as the following code will set it to “tests”
String str = "test".replaceFirst("(.*)$","$1s");
I would have expected both operations to produce the same result. Can someone explain why replaceAll adds an extra s to the end of the string?
This is because
"(.*)$"captures two strings from"test","test"and the empty string (“”). So replaceAll will add two"s".