@n3okill/utils
Version:
Many javascript helpers
35 lines • 1.44 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.multiReplace = multiReplace;
const toArray_1 = require("../array/toArray");
const isString_1 = require("../type/isString");
const escapeRegExp_1 = require("./escapeRegExp");
const toString_1 = require("./toString");
/**
* Replace multiple occurrences in a string
* @param str
* @param search {Array<string|RegExp>}
* @param replace {Array<string | ReplaceFunction> | string | ReplaceFunction}
* @returns
*/
function multiReplace(str, search, replace) {
const rep = (0, toArray_1.toArray)(replace);
let s = (0, toString_1.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 ((0, isString_1.isString)(search[i])) {
// eslint-disable-next-line security/detect-non-literal-regexp, security/detect-object-injection
s = s.replace(new RegExp((0, escapeRegExp_1.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
;