UNPKG

@n3okill/utils

Version:
35 lines 1.44 kB
"use strict"; 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