Метод replaceFirstMapped
Метод replaceFirstMapped ищет первое вхождение
подстроки, соответствующей регулярному выражению,
и заменяет его на результат, который возвращает
переданная функция. Сама исходная строка при этом
не изменяется. Первым параметром метод принимает
регулярное выражение или строку для поиска,
вторым - функцию-маппер, которая получает объект
совпадения Match и должна вернуть строку
для замены.
Синтаксис
str.replaceFirstMapped(pattern, (Match match) => replacement)
Пример
Давайте заменим первое число в строке на его удвоенное значение. Для этого в функции-маппере преобразуем найденную подстроку в число, умножим на два и вернём обратно в виде строки:
void main()
{
String str = 'abc 12345 def 12345';
String res = str.replaceFirstMapped(
RegExp(r'\d+'),
(Match match) => (int.parse(match.group(0)!) * 2).toString()
);
print(res);
}
Результат выполнения кода:
"abc 24690 def 12345"
Пример
Давайте заменим первое вхождение подстроки
'abcde' на её длину, обёрнутую в квадратные
скобки. В функции-маппере используем свойство
match.group(0) для получения найденного текста:
void main()
{
String str = 'abcde 12345 abcde';
String res = str.replaceFirstMapped(
'abcde',
(Match match) => '[${match.group(0)!.length}]'
);
print(res);
}
Результат выполнения кода:
"[5] 12345 abcde"
Смотрите также
-
метод
replaceFirst,
который заменяет первое вхождение подстроки -
метод
replaceAllMapped,
который заменяет все вхождения с помощью функции -
метод
replaceAll,
который заменяет все вхождения подстроки -
метод
replaceRange,
который заменяет диапазон символов