Javascript Strings • Zeichenketten

Javascript: Strings

Ein String ist eine Zeichenkette (z.B. »Queen Mary 2«), die durch einfache oder doppelte Hochkommas vom Code des Scripts getrennt ist. Strings sind der Dreh- und Angelpunkt der Entwicklung von Web-Anwendungen vom Kontaktformular bis zum Shopping Cart.

Auch wenn wir den Computer »Rechner« nennen: Programme wühlen sich laufend durch Zeichenketten.

18-12-15 SITEMAP

Strings von a bis z

Eingabefelder in Formularen werden als Strings gelesen, Pfadnamen und Nachrichten an den Benutzer sind klassische Anwendungen von Strings.

Jedes Zeichen eines Strings wird durch ein 16-Bit-Unicodezeichen dargestellt – Strings dürfen Umlaute enthalten und die Interationalisierung von Anwendungen mit Javascript ist ein Klacks.

const simpleStr = "äöüß";
const simpleStr = "Hallo Welt!";  // Literale Notation
const simpleStr = "";             // erzeugt einen leeren String
const simpleStr = 'D’dorf ';      // String in einfachen Hochkommas
const simpleStr = "Die „Queen Mary 2“ ist eingelaufen";

Im dritten Beispiel ist das Apostroph ein typografisches Apostroph-Zeichen ’ (’) und kein einfaches Hochkomma, sonst wäre da ein Fehler vorprogrammiert. Da betrifft Engländer und Franzosen aber eher (don’t, l’amour, I’m leaving).

Queen Mary 2 im vierten Beispiel steht in Anführungszeichen, die vom Script als normale Zeichen interpretiert werden und keine Begrenzung von Strings darstellen.

Hochkommas für Javascript-Strings

Die typografischen Anführungszeichen gelten nicht. Diese gibt es im englischsprachigen Raum nicht – typografische Anführungszeichen finden wir auch nicht auf der Tastatur, sondern setzen sie durch Tastatur-Kombinationen zusammen (Win Alt + 0132 und Alt 8222, Apple Alt Shift W und Alt 2).

Direkt auf der Tastatur gibt es nur das doppelte und das einfache Hochkomma, aber unsere Textverarbeitungsprogramme funktionieren meist vorausschauend und ersetzen das erste doppelte Hochkomma durch ein Anführungszeichen unten und das schließende doppelte Hochkomma durch ein Anführungszeichen oben. Nur diese Automatik bewahrt die deutschen, französischen und schweizer Anführungszeichen vor dem Aussterben.

„deutsches Anführungszeichen unten“
„deutsches Anführungszeichen oben“
„Apostroph“

Anführungszeichen sehen auch anders aus: Unten wie eine 99, oben wie 66. Hochkommas sind schlichte spartanische Strichlein.

Paarweise: einfache und doppelte Hochkommas

Quoting ist die Kunst, Strings in die richtigen einfachen bzw. doppelten Hochkommas zu setzen.

Hochkommas treten immer paarweise auf und die Paare müssen zusammenpassen: Wenn ein String mit einem einfachen Hochkomma beginnt, muss er mit einem einfachen Hochkomma geschlossen werden. Einfache Hochkommas dürfen doppelte Hochkommas enthalten und umgekehrt:

"Dies ist eine Zeichenkette"    // schöne doppelte Hochkommas
^                          ^
+--------------------------+

'@!zzz@@ zack!!! '
^                ^
+----------------+

'p { font-family: "Courier New" }'
^                 ^           ^  ^
+--------------------------------+

"Und noch'n 'String'"
^           ^      ^^
+-------------------+

"Wo ist die „Zeichenkette“?"     // Anführungszeichen 
^                          ^     // sind keine Hochkommas
+--------------------------+    


„Dies ist kein valider String“  // Falsch gequotet: 
                                // Anführungszeichen sind keine Hochkommas
                                
'Ohm'scher Widerstand'          // Falsch gequotet

'Kein "valider' String"         // Falsch gequotet

"drunter und drüber"            // Verschiedene Strings, da Javascript 
"Drunter und Drüber"            // zwischen Groß- und Kleinschreibung
                                // unterscheidet

"5"                             // Zahlen in Hochkommas: auch nur Strings
5                               // Ohne Hochkommas ist die Zahl eine Zahl 

""                              // Leere Hochkommas bilden einen null-String

Wenn weitere Sätze unterschiedlicher Hochkommas gebraucht werden, können sowohl einfache als auch doppelte Hochkommas mit einem vorangestellten Backslash notiert werden: \" oder \'. Zeichen mit einem vorangehenden Backslash werden als Escape-Sequenzen bezeichnet. Der Backslash teilt dem Interpreter mit, dass er das nächste Zeichen so dargestellen soll wie es ist.

elem.innerHTML = '<?php echo "<p class=\"simple\">Ausgabe"</p> ?>';
                 ^           ^         ^        ^        ^       ^
                 +-----------+---------+--------+--------+-------+

Länge von Strings: length

str.length gibt die Anzahl der Zeichen eines Strings zurück.

const simpleString = "Ich bin eine Zeichenkette";
let len = simpleString.length;                    // len hat jetzt den Wert 25

Theoretisch können Strings beliebig lang werden, nur ältere Browser, die heute kaum noch von Belang sind, limitieren Strings auf eine Länge von 255 Zeichen.

Strings suchen, vergleichen und ersetzen

string match
durchsucht einen String und gibt alle Treffer als Array zurück.
string indexOf
sucht einen String und gibt die erste Fundstelle zurück.
string search
sucht ebenfalls einen String und gibt die erste Fundstelle zurück, aber kann mit einem regulären Ausdruck eine komplexe Suche starten.
string replace
findet einen String und ersetzt ihn durch eine neue Zeichenkette.

String löschen

Die einfachste Methode, einen String zu löschen, ist das Zuweisen eines leeren Strings.

let simpleString = "Hallo Welt"; 
…
simpleString = "";

Escapezeichen

Escapezeichen werden zur Darstellung von Zeichen benutzt, die in regulären Ausdrücken normalerweise eine besondere Bedeutung haben und zur Darstellung von Zeichen, die nicht auf der Tastatur eingegeben werden können und im Dokument nicht direkt sichtbar sind, sondern nur durch ihre Wirkung in Erscheinung treten.

\f
Formfeed (Zeilenvorschub)
\n
Newline (Neue Zeile)
\n
Newline (Neue Zeile)
\r
Carriage return (Wagen-Rücklauf ohne Zeilenvorschub)
\t
Tabulator
\v
Vertikaler Tabulator

Objekt oder String?

Für Einsteiger ist das String-Objekt kein intuitiver Datentyp und oft fällt es schwer, den Typ einer Variable festzustellen – handelt es sich bei einem Wert um ein Objekt oder um einen String? Hier hilft der typeof-Operator.

let was1 = window.location;                // 
let was2 = window.location.href;           // 

let type1 = typeof(window.location);       // 
let type1 = typeof(window.location.href);  // 

Sowohl der Aufruf von window.location als auch der Aufruf von window.location.href erzielen dieselbe Ausgaben – aber window.location gibt ein String-Objekt zurück, während window.location.href einen String zurückgibt.