Ich habe die drei Vorschläge mal gesammelt:
output = input.split(/\bhas\b/).join(' ');
let i = input.lastIndexOf('has');
output = input.substr(0,i) + input.substr(i+4);
output = input.replace(/\bhas\b/g,' ');
Die lastIndexOf
-Variante finde ich persönlich am schlechtesten lesbar, und der Teufel steckt hier noch mehr im Detail: Die beiden anderen Methoden entfernen automatisch alle freistehenden Vorkommen von 'has'. Bei lastIndexOf
wird nur das letzte Vorkommen entfernt, was vermutlich so nicht gewollt ist. Man müsste die Methode also in einer Schleife oder Rekursion anwenden, um das gewollte Ergebnis zu erhalten. Außerdem muss man noch Fallunterscheidungen für einige Spezialfälle treffen: 'has' am Ende oder Anfang eines Satzes und nach oder vor einem Satzzeichen.
Da finde ich input.replace(/\bhas\b/g, ' ')
am elegantesten (und im Übrigen auch am schnellsten).