Nils N.: Problem mit String-replace()-Funktion

Beitrag lesen

Hallo,
nach langem ausprobieren komme ich einfach nicht auf die Lösung zu meinem Problem.
Ich habe eine Funktion geschrieben, mit der ich aus einem String per .replace() einzelne Teilstrings ersetzen möchte. Leider funktioniert das nicht, so wie ich das will.

So sieht die Funktion aus (zur Übersicht ein wenig gekürzt):

String.prototype.toHiragana = function () {
hiragana = this.replace(/.*h[(.*)]h.*/, '$1');

hiragana = hiragana.replace(/kya/g, "ki_ya");
hiragana = hiragana.replace(/kyu/g, "ki_yu");
hiragana = hiragana.replace(/kyo/g, "ki_yo");
...
hiragana = hiragana.replace(/u/g, "う");
hiragana = hiragana.replace(/i/g, "い");
hiragana = hiragana.replace(/a/g, "あ");

return this.replace(/h[.*]h/, hiragana);
}

Die erste Zeile holt den Text aus von mir ausgedachten Tags (h[...]h). Dann sollen Teilstrings im Text ersetzt werden. Danach soll der ersetzte Text anstatt dem Text innerhalb der Tags im Originalstring als Rückgabewert zurückgegeben werden.

Die Funktion will einfach nicht laufen. Wenn ich die Zeilen mit 'hiragana = hiragana.replace(...)' rauskommentiere, funktioniert die Funktion aber, es muss also an diesen Zeilen liegen. Ich habe schon so viel ausprobiert, der Fehler will aber einfach nicht von mir gefunden werden. Insgesamt habe ich 130 solcher Zeilen. Liegt es vielleicht daran? Also Gibt es vielleicht eine Maximalgrenze für nacheinander mögliche replaces?

Mfg Nils

Okay, ich habe es jetzt hinbekommen.
Die einfachste Lösung war die beste, wie so oft im real life:

Ich darf bei der replace()-Methode keine regülären Ausdrücke verwenden, sondern nur normale Strings. D.h. aus

replace(/u/g, "う"); -> replace("u", "う");
replace(/i/g, "い"); -> replace("i", "い");
replace(/a/g, "あ"); -> replace("a", "あ");

Ich verstehe zwar nicht, warum die regulären Ausdrücke hier nict funktioniert haben, aber es ist eigentlich egal. So funktioniert es bestens.

Vielen Dank nochmals für eure Zeit

MfG Nils