@NonNull
    public static String replaceAll(final String text, final String startToken, final String endToken, final String replacement) {
        if (text == null) {
            return "";
        }
        return getTokenSearchPattern(startToken, endToken).matcher(text).replaceAll(replacement);
    }
Replaces all occurences of texts starting with 'startToken' and ending with 'endTOken' with given 'replacement'.
Note that 'replacement' is interpreted as regex as defined in {@link String#replaceAll(String, String)}}.
In replacmenent, '$1' may be used to reference the replaced text inside the tokens
it is assured that for same parameters, matches are always the same as in {@link #getAll(String, String, String)}.

@param text        text to do replacement in
@param startToken  starttoken. if blank then "starttoken" is assumed to be start of text
@param endToken    starttoken. if blank then "endtoken" is assumed to be end of text
@param replacement replacements
@return text with replacements
main/src/main/java/cgeo/geocaching/utils/TextUtils.java