locutus
Version:
Locutus other languages' standard libraries to JavaScript for fun and educational purposes
26 lines (25 loc) • 1.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.replacingOccurrences = replacingOccurrences;
const escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
function replacingOccurrences(str, target, replacement, caseInsensitive = false) {
// discuss at: https://locutus.io/swift/String/replacingOccurrences/
// original by: Kevin van Zonneveld (https://kvz.io)
// note 1: Replaces every occurrence of target in str, similar to Swift replacingOccurrences(of:with:options:).
// example 1: replacingOccurrences('hello world', 'l', 'L')
// returns 1: 'heLLo worLd'
// example 2: replacingOccurrences('Swift swift SWIFT', 'swift', 'ts', true)
// returns 2: 'ts ts ts'
// example 3: replacingOccurrences('abcabc', 'ab', '#')
// returns 3: '#c#c'
const source = String(str);
const needle = String(target);
const nextValue = String(replacement);
if (needle === '') {
return source;
}
if (caseInsensitive) {
return source.replace(new RegExp(escapeRegExp(needle), 'gi'), nextValue);
}
return source.replaceAll(needle, nextValue);
}