TypeScript:
Поиск и замена текста
Как это сделать:
TypeScript, основываясь на JavaScript, располагает удобными методами для манипуляции со строками. Мы можем использовать String.prototype.replace()
для базовых операций поиска и замены. Ознакомьтесь с этими фрагментами кода:
// Простая замена в строке
let text: string = "Hello, World!";
let newText: string = text.replace("World", "TypeScript");
console.log(newText); // Вывод: Hello, TypeScript!
// Глобальная замена с regex
let regexText: string = "foo bar foo bar";
let globalRegex: RegExp = /foo/g;
let newRegexText: string = regexText.replace(globalRegex, "baz");
console.log(newRegexText); // Вывод: baz bar baz bar
// Замена с использованием функции
let dynamicText: string = "I have 2 apples and 5 oranges.";
let fruitCounter: string = dynamicText.replace(/\d+/g, (match) => {
return (+match * 2).toString();
});
console.log(fruitCounter); // Вывод: I have 4 apples and 10 oranges.
Глубокое погружение
Исторически, замена текста была возможностью даже в самых ранних инструментах обработки текста, с иконическими примерами вроде Unix-утилиты sed
. В более современном программировании операции замены часто бывают более мощными при сочетании с регулярными выражениями (regex) для сопоставления с образцами.
Альтернативы String.prototype.replace()
в TypeScript множественны. Библиотеки вроде Lodash предлагают _.replace()
с похожим синтаксисом. Для более сложных сценариев вы можете рассмотреть возможность создания собственного парсера или использования библиотек парсеров для задач трансформации, выходящих за рамки простой замены строк.
Когда мы говорим о реализации, помните, что .replace()
не изменяет исходную строку. Строки в JavaScript и TypeScript неизменяемы. Метод возвращает новую строку, поэтому, если вам нужен измененный текст, вам придется его сохранить, как в примерах выше.
Смотрите также
- MDN Web Docs по
replace()
: MDN String replace - Инструмент для тестирования regex, чтобы отточить ваши навыки сопоставления с образцом: Regex101
- Замена строки в Lodash для альтернативного подхода: Lodash _.replace