@rpearce/flexible-string-replace
Version:
🧶 Safely replace any part of a string with anything. Example: useful for replacing substrings with JSX in React
25 lines (23 loc) • 876 B
JavaScript
function flexibleStringReplace(pattern, replacer, // eslint-disable-line @typescript-eslint/no-explicit-any
str) {
var result = [];
var position = 0;
str.replace(pattern, function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var argsN = args.length;
var match = args[0];
var originalStr = args[argsN - 1];
var charOffset = args[argsN - 2];
var prevChars = originalStr.slice(position, charOffset);
var replaced = typeof replacer === 'function' ? replacer.apply(void 0, args) : replacer;
result.push(prevChars, replaced);
position = charOffset + match.length;
return ''; // no-op
});
result.push(str.slice(position));
return result;
}
export default flexibleStringReplace;