JavaScript/Objekte/String

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Die Eigenschaften und Methoden des Objektes String können Sie auf alle Zeichenketten anwenden. Intern verwenden Browser die UTF-16-Kodierung. Bei Verwendung seltener Zeichen werden deshalb intern zwei Zeichen(einheiten) zur Kodierung verwendet. Dies muss bei String-Funktionen beachtet werden, die etwas mit der Länge oder Position in einem String zu tun haben, da es sich hierbei um eine Angabe in Zeicheneinheiten handelt.

String hat in JavaScript zwei Bedeutungen:

  • einfacher Datentyp für Zeichenketten (wie u.a. auch Zahlen)
  • globales Objekt zur Handhabung von Zeichenketten


Eigenschaften


obsolete Methoden

Methoden


Der einfache Datentyp String[Bearbeiten]

Ein einfacher String wird mit einem so genannten String-Literal erzeugt:

Beispiel: Stringliterale
let einfach = 'string1';
let doppelt = "string2";

let backticks = `string3`;

Dabei ist es egal, ob Sie doppelte oder einfache Anführungszeichen verwenden, auch backticks (rückwärts geneigte Hochkommas) sind möglich.

Dies wird erst dann wichtig, wenn in der Zeichenkette selbst solche vorkommen. In einem solchen Fall müssen sie mit dem Backslash maskiert (escaped) werden:

Beispiel
tag1 = '<div class="cont">';
tag2 = "<div class=\"cont\">";

Auch mit String('text') wird ein einfacher String erzeugt.

Bei sehr langen Strings möchte man diese manchmal über mehrere Zeilen notiert im Quelltext haben. Dies ist prinzipiell in Javascript möglich, indem der Zeilenumbruch einfach mit \ entwertet wird:

Beispiel
var foo = '<ol>\
<li>First</li>\
<li>Second</li>\
</ol>';

Dieser Ansatz hat den Nachteil, dass er Fehler erlaubt, die man kaum feststellen kann. Im Gegensatz zu obigem Beispiel verursacht folgendes einen Laufzeitfehler:

Beispiel
var foo = '<ol>\ 
<li>First</li>\
<li>Second</li>\
</ol>';

Der Unterschied zwischen den beiden Beispielen ist, dass in Letzterem am Ende der ersten Zeile noch ein Leerzeichen steht. \ maskiert somit das Leerzeichen und nicht den Zeilenumbruch.

Hinweis

Markieren Sie einmal den Code mit der Maus (oder mit der Tastenkombination Strg + A), um den Unterschied besser zu sehen.

Um einen String auf mehrere Zeilen aufzuteilen, ist es daher meistens empfehlenswerter, dies mittels des String-Verkettungs-Operators + (concatenate) zu tun:

Beispiel
var foo = '<ol>' +
'<li>First</li>' +
'<li>Second</li>' +
'</ol>';
// Oder so
var foo = '<ol>'
+ '<li>First</li>'
+ '<li>Second</li>'
+ '</ol>';

Strings werden intern entsprechend der Spezifikation als UCS-2 oder UTF-16 kodiert. Im Falle von UCS-2 bedeutet dies, dass Unicode-Zeichen außerhalb des BMP (Unicode-Codepoint größer als U+FFFF) nicht bekannt sind. Dies hat praktisch zur Folge dass solche Zeichen als 2 Zeichen behandelt werden. (Siehe auch den Hinweis bei .length)

Strings verknüpfen[Bearbeiten]

Strings können mit dem +-Operator miteinander verknüpft werden.

Beispiel
t1 = "Hallo";
t2 = "Welt";
t3 = t1 + " " + t2; // "Hallo Welt"

Template-Literale[Bearbeiten]

Das aus PHP bekannte Parsing von Strings ist mit ECMAScript 6 nun auch in JavaScript verfügbar. Man spricht hier von Template-Literalen. Sie unterscheiden sich von Strings dadurch, dass sie von `Backticks` statt Apostroph- oder Anführungszeichen begrenzt werden. Darüber hinaus können sie Zeilenumbrüche enthalten, entsprechen also semantisch den heredoc-Strings aus PHP.

Das String-Objekt[Bearbeiten]

Sobald mit einem String eine Operation durchgeführt wird, wird dieser intern in ein String-Objekt umgewandelt. Ein String-Objekt kann auch von Hand erzeugt werden:

Beispiel
foo = new String('text');

Durch das String-Objekt werden die .length-Eigenschaft und eine Reihe von Methoden zur Bearbeitung von Strings bereitgestellt.

Beispiel ansehen …
function überprüfen() {
  var ort = 'Friedrichshafen';
  var ergebnis = (ort + ' hat ' + ort.length + ' Buchstaben.');
  ausgabe(ergebnis);
}
Im Beispiel wird eine Variable ort definiert, der ein Wert zugewiesen wird, nämlich der Wert Friedrichshafen. Anschließend wird in einem Meldungsfenster ausgegeben: Friedrichshafen hat 15 Buchstaben. Dies geschieht durch einen Aufruf der Objekteigenschaft String.length. Vor dem Punkt kann also eine Variable oder auch irgendeine andere JavaScript-Objekteigenschaft stehen, in der eine Zeichenkette gespeichert ist. Hinter dem Punkt folgt die gewünschte Eigenschaft oder Methode des String-Objekts.


Zeichenketten in JavaScript werden als eine Kette von Einzelzeichen betrachtet.

Jedes Einzelzeichen hat seine Position in der Zeichenkette:

Beispiel
    var name = 'Hans';
    console.log(Name[0] + Name[1] + Name[2] + Name[3]);

Das Beispiel definiert eine Variable mit den Namen name. Diese Variable erhält den Wert "Hans". Anschließend wird in der Konsole zeichenweise dieser Wert der Variablen name ausgegeben. Das Ergebnis ist das gleiche, wie wenn einfach console.log(name) notiert würde. Aber an dieser Notationsform können Sie erkennen, wie Zeichenketten funktionieren:

name[0] ist das H,

name[1] das a,

name[2] das n und

name[3] das s.

Es wird also immer bei 0 zu zählen begonnen.

Siehe auch[Bearbeiten]

Weblinks[Bearbeiten]

  • ECMAScript 2015 (6th Edition, ECMA-262): String
  • MDN: String