siba: den backshlash \ in einem String identifizieren

Hi,

in einem (in einem Formular eingegebenen) String soll der \ nicht vorkommen.
Da dieser nun maskiert, kann ich weder mit charAt() noch mit charCodeAt() kriegen:

wert = 'F\reddy';
alert(wert.length + "    " + wert.charCodeAt(1));

Wie sorge ich dafür, dass er nicht mehr als Maskierungszeichen gewertet wird?

Danke im Voraus

Siba

  1. Schon mal mit <a href="sonedatei.html" target="dernamedesframes">klick</a> versucht? Oder versteh' ich dich falsch?

    1. Sorry, verklickt...

  2. Hallo Siba,

    in einem (in einem Formular eingegebenen) String soll der \ nicht vorkommen.
    [...]
    wert = 'F\reddy';

    Es besteht ein Unterschied, ob ein String vom Benutzer in ein Formularfeld eingegeben wird oder vom Autor im JavaScript-Quellcode in einem Literal angegeben wird. Wenn du schreibst:

    wert = 'F\reddy';

    dann wird der Text, der zwischen den beiden Hochkommata (') steht, zuerst auf Steuerzeichen untersucht und diese ausgewertet, bevor er als String der Variablen "wert" zugewisen wird. Nach der oben stehenden Anweisung hat "wert" also den Wert "Freddy". Du kannst darin also keinen Backslash mit indexOf() oder Ähnlichem finden.

    Wenn du aber schreibst:

    <form name="meinformular" action="">
    <input type="text" name="wert" value="" />
    </form>

    und dann die Seite im Browser anzeigst und Text im Eingabefeld eingibst, dann wird der eingegebene Text nicht auf Steuerzeichen untersucht, sondern so genommen, wie er ist. Wenn du also in dieses Formularfeld im Browser "F\reddy" eingibst (ohne den Anführungszeichen), dann hat document.meinformular.wert.value den Wert "F\reddy" und du kannst den Backslash darin finden.

    Deine Frage stellt sich also gewissermaßen gar nicht, weil in einem Formularfeld eingegebene Steuerzeichen immer im String gefunden werden können. Falls du doch kein Formularfeld verwenden willst und den String direkt als Literal im Quelltext "eingravierst", musst du Backslashs verdoppeln, also "F\reddy" schreiben (das scheint in SELFHTML zu fehlen).

    Viel Erfolg,
    Robert