UNPKG

@n3okill/utils

Version:
32 lines 1.25 kB
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