Hi!
Ich wollte nun, einen Konverter machen, der einen vulkanischen Text, in IPA konvertiert, was die Aussprache sagen soll.
Bevor ich aber losgelegt hatte, habe ich noch geprüft, ob das Prinzip funktioniert, und machte mir einen Beispiel-Code.
Er sieht so aus:
Ich erstellte eine Datei Namens vulcaninipa.js:
// Diese Datei ist urheberrechtlich geschützt
// heruntergeladen von
// http://www.beispiel.de/
M = {
"test": ")",
"beispiel": "*"
}
Außerdem eine HTML-Datei:
<html>
<head>
<title>VULCAN - IPA Konverter V.1.0</title>
<script src="vulcaninipa.js"></script>
<script type="text/javascript">
for (k in M) {
k2 = k.replace(/ü/g, 'ü')
M[k2] = M[k]
}
function trim(s) {
return s.replace(/^\s*/, '').replace(/\s*$/, '');
}
function insert(input, s) {
if (document.selection) {
input.focus();
document.selection.createRange().text = s;
} else if (input.selectionStart || input.selectionStart == '0') {
start = input.selectionStart;
end = input.selectionEnd;
input.value = input.value.substring(0, start) + s + input.value.substring(end, input.value.length);
} else {
input.value += s;
}
input.focus();
}
function update() {
vulcan = document.getElementById("vulcan").value;
vulcan = vulcan.replace(/([1-4])/g, '$1 ').split(/\s+/);
ipa = '';
for (i in vulcan) {
pchar = (vulcan[i]);
if (pchar) {
c = M[pchar];
if (c) {
ipa += c.replace(/([^;]+;)/, '<b>$1</b>');
} else {
ipa += '<b>' + vulcan[i] + '</b>';
}
}
}
ipa_element = document.getElementById("ipa");
ipa_element.innerHTML = ipa;
}
</script>
</head>
<div class=posts>
<h1>VULCAN - IPA Konverter V.1.0</h1>
<h2>Vulkanisch:</h2>
<form onsubmit="update(); return false;">
<input id=vulcan onkeyup="update()">
</form>
<h2>IPA:</h2>
<div id=ipa>
<No Script ([url=http://www.computerhilfen.de/computerhilfen-netiquette.html#werbeblocker][b]Bitte beachten: Unsere Regeln zu Werbeblockern![/b][/url])>
Fehler: Sie brauchen einen JavaScript fähigen Browser.
</No Script ([url=http://www.computerhilfen.de/computerhilfen-netiquette.html#werbeblocker][b]Bitte beachten: Unsere Regeln zu Werbeblockern![/b][/url])>
</div>
</body>
</html>
Und nun funktioniert auch alles. Aber das Problem ist folgendes:
Wenn ich die Silbe "test" (ohne "") eingebe, wird sie durch das Zeichen ")" ersetzt (so wie ich es auch in der Datei vulcaninipa.js festgelegt habe); wenn ich die Silbe aber 2 oder mehrmals ungetrennt eingebe (z.B. "testtest"), dann wird überhaupt nichts ersetzt.
Die Silbe wird nur 2 mal, ersetzt, wenn ich sie getrennt mit Leerzeichen eingebe (z.B. "test test").
Ich möchte aber, das man solche Silben zusammengesetzt schreiben kann, und diese trotzdem einzeln ersetzt werden (mit ungetrennter Ausgabe).
Also das wenn ich z.B. "testtest" eingebe, dabei "))" rauskommt.
Hat da jemand eine Idee, wie ich das machen könnte?