JSFiddle - React, Tailwind, and code Playground

by Antonín Slejška

HTML

<div id="textBefore"></div>
<div id="textAfter"></div>
<div id="replaced"></div>

JavaScript

var text = "Ještě. že; \"už\" à. Fürs, 'anlässlich' že že že.";
var terms = ["à","anlässlich","Fürs","už","Ještě", "že"];
var replaced = [];
var order = 0;

document.getElementById("textBefore").innerHTML = "Text before replacement: " + text;

for (i = 0; i < terms.length; i++) {
    terms[i] = "(^\|[ \n\r\t.,;'\"\+!?-])(" + terms[i] + ")([ \n\r\t.,;'\"\+!?-]+\|$)";
}
var re = new RegExp(terms.join("|"), "");

while (true) {
    var replacedString = "";
    text = text.replace(re, function replacer(match){
        var beginning = match.match("^[ \n\r\t.,;'\"\+!?-]+");
        if (beginning == null) beginning = "";
        var ending = match.match("[ \n\r\t.,;'\"\+!?-]+$");
        if (ending == null) ending = "";
        replacedString = match.replace(beginning,"");
        replacedString = replacedString.replace(ending,"");
        replaced.push(replacedString);
        return beginning+"{{"+order+"}}"+ending;
    });
    if (replacedString == "") break;
    order += 1;
}

document.getElementById("textAfter").innerHTML = "Text after replacement: " + text;
document.getElementById("replaced").innerHTML ="Replaced terms: " + JSON.stringify(replaced);