Nach einem Teilstring über einen regulären Ausdruck zu suchen, und diesen dann nach einer Transformation wieder zurückzuschreiben ist eine häufige Operation, für die es in Java 9 zwei neue Methoden gibt.
- String replaceFirst(Function<MatchResult, String> replacer)
- String replaceAll(Function<MatchResult, String> replacer)
Beispiel
String s = Pattern.compile( "(\\d+)\\s+[€|EUR]+" ) .matcher( "2 Perlen, 10 € in bar und 10000 EUR auf dem Konto." ) .replaceAll( matchresult -> matchresult.group( 1 ).length() < 4 ? "wenig Kohle" : "viel Kohle" ); System.out.println( s ); // 2 Perlen, wenig Kohle in bar und viel Kohle auf dem Konto.