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