You use appendReplacement and appendTail directly when you want to process the input in some other--or additional--manner than replaceAll does. For instance, if you want to use the matched text as a key to look up the replacement value in a table, you have to write your own replaceAll equivalent. Here's an example I happened to have handy:
Nick Widelec wrote:I was searching for a good explanation of the method appendReplacement, further than the above posted there is this one which is very very good in my opinion.
To be blunt, this example is pretty bad. It is not only *NOT* "very very good", it is not even a valid example as it is being used wrong.
The appendReplacement() method is paired up with the appendTail() method. This example doesn't do that. And if you look at the output, you will see that it does more than just a simple replacement. It also truncates everything after the match (due to the missing appendTail() call). Unfortunately, it is only a period that has been truncated -- which probably went unnoticed.
Anyway, if this is a sign of the quality, I would highly recommend that you use a different site to learn Java.
1) it doesn't take advantage of appendReplacement properly
2) it doesn't account for null pointers or unmatched properties
Here is a slight tweak to the code that resolves those issues:Of course, nowadays, there are plenty of frameworks that handle this kind of thing for us like Spring's PropertyPlaceholderHelper.