@n3okill/utils
Version:
Many javascript helpers
32 lines • 1.25 kB
JavaScript
import { toArray } from "../array/toArray";
import { isString } from "../type/isString";
import { escapeRegExp } from "./escapeRegExp";
import { toString } from "./toString";
/**
* Replace multiple occurrences in a string
* @param str
* @param search {Array<string|RegExp>}
* @param replace {Array<string | ReplaceFunction> | string | ReplaceFunction}
* @returns
*/
export function multiReplace(str, search, replace) {
const rep = toArray(replace);
let s = toString(str);
if (rep.length !== 1 && rep.length !== search.length) {
throw new TypeError("Unequal number of search and replace terms.");
}
for (let i = 0; i < search.length; i++) {
const replacement = rep[rep.length !== 1 ? i : 0];
// eslint-disable-next-line security/detect-object-injection
if (isString(search[i])) {
// eslint-disable-next-line security/detect-non-literal-regexp, security/detect-object-injection
s = s.replace(new RegExp(escapeRegExp(search[i]), "g"), replacement);
}
else {
// eslint-disable-next-line security/detect-object-injection
s = s.replace(search[i], replacement);
}
}
return s;
}
//# sourceMappingURL=multiReplace.js.map