in lib/src/characters_impl.dart [841:866]
CharacterRange? replaceAll(Characters pattern, Characters replacement) {
var patternString = pattern.string;
var replacementString = replacement.string;
if (patternString.isEmpty) {
var replaced = _explodeReplace(
_string, _start, _end, replacementString, replacementString);
var newEnd = replaced.length - (_string.length - _end);
return _expandRange(replaced, _start, newEnd);
}
if (_start == _end) return null;
var start = 0;
var cursor = _start;
StringBuffer? buffer;
while ((cursor = _indexOf(_string, patternString, cursor, _end)) >= 0) {
(buffer ??= StringBuffer())
..write(_string.substring(start, cursor))
..write(replacementString);
cursor += patternString.length;
start = cursor;
}
if (buffer == null) return null;
buffer.write(_string.substring(start));
var replaced = buffer.toString();
var newEnd = replaced.length - (_string.length - _end);
return _expandRange(replaced, _start, newEnd);
}