src/java.base/share/classes/java/util/regex/Matcher.java
Print this page
@@ -991,10 +991,11 @@
* @since 9
*/
public Matcher appendReplacement(StringBuilder sb, String replacement) {
// If no match, return error
if (first < 0)
+
throw new IllegalStateException("No match available");
StringBuilder result = new StringBuilder();
appendExpandedReplacement(replacement, result);
// Append the intervening text
sb.append(text, lastAppendPosition, first);
@@ -1176,14 +1177,16 @@
reset();
boolean result = find();
if (result) {
StringBuilder sb = new StringBuilder();
do {
- appendReplacement(sb, replacement);
+ sb.append(text, lastAppendPosition, first);
+ appendExpandedReplacement(replacement, sb);
+ lastAppendPosition = last;
result = find();
} while (result);
- appendTail(sb);
+ sb.append(text, lastAppendPosition, getTextLength());
return sb.toString();
}
return text.toString();
}
@@ -1402,12 +1405,13 @@
throw new NullPointerException("replacement");
reset();
if (!find())
return text.toString();
StringBuilder sb = new StringBuilder();
- appendReplacement(sb, replacement);
- appendTail(sb);
+ sb.append(text, 0, first);
+ appendExpandedReplacement(replacement, sb);
+ sb.append(text, last, getTextLength());
return sb.toString();
}
/**
* Replaces the first subsequence of the input sequence that matches the