# Zeichenkettenfunktionen
Bornierte Menschen soll man nicht widerlegen wollen. Widerspruch ist immerhin ein Zeichen von Anerkennung.
– Richard von Schaukal, österr. Lyriker
Zwar wurde zu Beginn dieses Buchs davon gesprochen, dass ein String ein Variablentyp sei, jedoch ist das nicht ganz richtig bzw. nicht die ganze Wahrheit. Es hat aber anfangs das Verstehen gewisser Mechanismen in JavaScript erleichtert. Richtig ist, dass Strings Objekten ähnlich sind, die auf einem Array mehrerer einzelner Zeichen basieren. Dies konnten Sie zu dem Zeitpunkt feststellen, als mit der Methode toLowerCase
alle Zeichen eines Strings in Kleinbuchstaben umgewandelt wurden. Sie können Strings auf zwei verschiedene Arten definieren: entweder wie normale Variablen
var zeichenkette = "Zeichenkette";
oder aber wie ein Objekt:
var zeichenkette = new String("Zeichenkette");
In der Regel wird ein String aber ganz normal wie andere Variablen definiert, da dies kürzer und übersichtlicher ist.
Zusätzlich zu der Methode toLowerCase
gibt es noch weitere Methoden und Eigenschaften, die Sie im Laufe Ihrer eigenen Programmieraufgaben sicherlich das ein oder andere Mal benötigen werden.
# Länge
Die Länge einer Zeichenkette können Sie durch die Eigenschaft length
ermitteln. Diese Eigenschaft gibt die tatsächliche Anzahl aller Zeichen eines Strings zurück.
var zeichenkette = "Dies ist eine Zeichenkette";
laenge = zeichenkette.length;
document.write(laenge);
Dieses Script würde die folgende Bildschirmausgabe erzeugen:
26
Dies liegt daran, dass der String zeichenkette
inklusive aller Leerzeichen insgesamt 26 Zeichen enthält.
Die Eigenschaft length
ist übrigens die einzige Eigenschaft, über die Strings verfügen.
# Groß- und Kleinschreibung
Besonders interessant ist die Möglichkeit, alle Zeichen eines Strings in Groß- oder Kleinbuchstaben umzuwandeln. Möchten Sie z. B. überprüfen, ob eine bestimmte Zeichenkette innerhalb einer anderen vorkommt, ist es leichter, wenn Sie die Groß- und Kleinschreibung nicht berücksichtigen müssen, immerhin ist Test
eine andere Zeichenkette als TEST
.
Alle Zeichen eines Strings können Sie mit der Methode toLowerCase()
in Kleinbuchstaben und mit der Methode toUpperCase()
in Großbuchstaben umwandeln.
var zeichenkette = "Dies ist eine Zeichenkette";
document.write(zeichenkette);
document.write(zeichenkette.toLowerCase());
document.write(zeichenkette.toUpperCase());
document.write(zeichenkette);
Die Ausgabe dieses Scripts sieht wie folgt aus:
Dies ist eine Zeichenkettedies ist eine zeichenkette
DIES IST EINE ZEICHENKETTE
Dies ist eine Zeichenkette
Wichtig ist jedoch dabei, dass keine Veränderung stattfindet. Die Originalschreibweise des Strings bleibt erhalten, da die Methoden toLowerCase()
und toUpperCase()
nur die veränderte Schreibweise zurückgeben, nicht aber die eigentliche Schreibweise ändern.
# Zeichenposition
Mit der Methode indexOf()
können Sie das erste Vorkommen eines Zeichens oder einer Zeichenkette ermitteln. Die Methode erwartet dabei als Parameter das zu suchende Zeichen oder die Zeichenkette.
var zeichenkette = "Dies ist eine Zeichenkette";
document.write(zeichenkette.indexOf("ist"));
Die Ausgabe für dieses Script sieht folgendermaßen aus:
5
Sollten Sie sich jetzt fragen, warum die Methode indexOf()
in diesem Beispiel den Wert 5 statt 6 ausgibt, sollten Sie bedenken, dass – wie bereits erwähnt – Strings auf Arrays aus mehreren einzelnen Zeichen basieren. Da bei Arrays die Zählung mit 0 beginnt, erfolgt auch bei Strings die Zählung mit 0. Das erste Zeichen eines String hat also die Position 0, das zweite die Position 1 usw. Sollte das angegebene Zeichen oder die Zeichenkette nicht gefunden werden können, wird der Wert –1 zurückgegeben.
Optional können Sie der Methode indexOf()
aber auch eine Startposition übergeben, ab der der String durchsucht werden soll. So könnten Sie mit dieser Methode und der Angabe einer Startposition einen String daraufhin überprüfen, wie oft ein Zeichen oder eine Zeichenkette innerhalb dieses Strings vorkommt.
var zeichenkette = "Dies ist eine Zeichenkette";
var anz = 0;
var pos = 0;
while(zeichenkette.indexOf("e",pos) > -1)
{
pos = zeichenkette.indexOf("e",pos);
document.write("e an Position "+pos+"<br>");
anz++;
pos++;
}
document.write("e wurde "+anz+"x gefunden");
Die Ausgabe für dieses Beispiel lautet:
e an Position 2
e an Position 9
e an Position 12
e an Position 15
e an Position 19
e an Position 22
e an Position 25
e wurde 7x gefunden
Zuallererst werden die Variablen anz
und pos
auf 0 gesetzt. In der Variablen anz
soll gespeichert werden, wie oft der Buchstabe »e« innerhalb des Werts der Zeichenkette zeichenkette
gefunden wurde. Mit der Variablen pos
bestimmen Sie die Startposition, ab der gesucht werden soll. Die while
-Schleife wird ausgeführt, solange der Rückgabewert von indexOf()
größer –1 ist (die Zeichenkette also gefunden wurde). Gesucht wird nach dem Zeichen »e« ab der Position pos
. Im Anweisungsblock wird nun der Variablen pos
die Position des Zeichens zugewiesen und in der darauf folgenden Zeile ausgegeben. Danach wird sowohl anz
als auch pos
um den Wert 1 erhöht. Der Grund, warum anz
erhöht wird, versteht sich von selbst (zum Zählen). Die Variable pos
wird erhöht, weil sonst das Zeichen oder die Zeichenkette immer wieder an derselben Stelle gefunden werden würde. Da Sie aber bereits wissen, dass es an dieser Stelle vorkommt, legen Sie fest, dass indexOf()
nach der Position des Zeichens weitersuchen soll. Zum Schluss wird dann noch die Variable anz
ausgegeben.
# Teilzeichen
Um ein einzelnes Zeichen eines Strings auszulesen, benötigen Sie die Methode charAt()
. Sie erwartet als Parameter die Position des Zeichens, das zurückgegeben werden soll.
var zeichenkette = "Dies ist eine Zeichenkette";
char = zeichenkette.charAt(5);
document.write(char);
Dieses Script erzeugt die folgende Ausgabe:
i
Das Zeichen an Position 5 des Strings zeichenkette
lautet i. Denken Sie daran, dass mit der Zählung bei 0 angefangen wird.
Die Methode kann sehr gut dafür verwendet werden, um ein bestimmtes Zeichen eines Strings durch ein anderes zu ersetzen. Um in einem String alle Buchstaben »e« durch ein »o« zu ersetzen, müssten Sie folgendes Script verwenden:
var zeichenkette = "Dies ist eine Zeichenkette";
var neu = "";
for(var i = 0; i < zeichenkette.length; i++)
{
if(zeichenkette.charAt(i) == "e")
{
neu += "o";
}
else
{
neu += zeichenkette.charAt(i);
}
}
document.write(neu);
Die Ausgabe dieses Scripts lautet:
Dios ist oino Zoichonkotto
Zuerst wird der bekannte String zeichenkette
und anschließend ein weiterer String mit dem Bezeichner neu
definiert. Dieser String soll den veränderten String zeichenkette
zugewiesen bekommen. In der for
-Schleife legen Sie als Bedingung fest, dass die Schleife durchlaufen werden soll, solange i
kleiner als die Anzahl der Zeichen des Strings zeichenkette
ist. Im Anweisungsblock der for
-Schleife wird nun überprüft, ob das Zeichen an der Position i
dem Buchstaben »e« entspricht. Ist dies der Fall, wird dem String neu
der Buchstabe »o« angehängt, ansonsten wird ihm das Zeichen an Position i
von zeichenkette
angehängt. Zu guter Letzt wird der String neu
im Browser ausgegeben.
# Teilstring
Es gibt zwei Varianten, um aus einem String einen Teilstring zu kopieren.
# Variante 1
Anders als die Methode charAt()
liefert substr()
eine Zeichenkette aus einem String zurück. Die Methode erwartet als Parameter zum einen die Position, ab der der Teilstring kopiert werden soll, und zum anderen die Angabe, wie viele Zeichen kopiert werden sollen.
var zeichenkette = "Dies ist eine Zeichenkette";
teilstring = zeichenkette.substr(14,12);
document.write(teilstring);
Das Script gibt Folgendes im Browser aus:
Zeichenkette
Das Wort »Zeichenkette« beginnt im String zeichenkette
an der Position 14 (Zählung beginnt bei 0) und ist insgesamt 12 Zeichen lang. Dieser Teilstring wird dem String teilstring
zugewiesen und anschließend im Browser ausgegeben.
# Variante 2
Mit der Methode substring()
können Sie eine Zeichenkette von einer Position des Quellstrings bis zu einer weiteren Position des Quellstrings zurückgeben lassen. Als Parameter erwartet die Methode die Anfangs- und Endposition.
var zeichenkette = "Dies ist eine Zeichenkette";
teilstring = zeichenkette.substring(14,26);
document.write(teilstring);
Die Ausgabe im Browser:
Zeichenkette
Nach der Definition des Strings zeichenkette
wird ein Teilstring von Position 14 bis zur Position 26 aus dem String zeichenkette
kopiert und dem String teilstring
zugewiesen. Anschließend wird teilstring
im Browser ausgegeben.
# String zerlegen
Die Methode split()
ermöglicht es, einen Quellstring zu zerlegen. Die Zerlegung erfolgt nach einem bestimmten Zeichen, das der Methode als Parameter übergeben wird. Das Ergebnis dieser Methode ist ein Array aus Strings.
var zeichenkette = "Dies ist eine Zeichenkette";
zerlegt = zeichenkette.split(" ");
document.write(zerlegt.length);
Die Ausgabe dieses Scripts lautet:
4
Zuerst wurde die Ihnen bereits bekannte Variable zeichenkette
definiert. Anschließend wird der Variablen zerlegt
das Ergebnis des Methodenaufrufs von split()
zugewiesen. Der Parameter, der an split()
übergeben wurde, veranlasst die Methode, den String zeichenkette
an all den Stellen zu teilen, an denen ein Leerzeichen vorkommt. Der String zeichenkette
enthält insgesamt drei Leerzeichen, somit erhalten Sie vier Teilstrings. Anschließend wird die Größe des zerlegt
-Arrays im Browser ausgegeben.
Natürlich gelten auch für Arrays, die auf diese Art erzeugt wurden, die gleichen Regeln wie für andere Arrays, z. B. die Zählung beginnend mit 0. Mit Indizes können Sie nun auf die einzelnen Teilstrings des Arrays zugreifen.
var zeichenkette = "Dies ist eine Zeichenkette";
zerlegt = zeichenkette.split(" ");
document.write("Das 2. Wort lautet: "+zerlegt[1]);
# Zusammenfassung
- Strings bzw. Zeichenketten sind quasi ein Array aus einzelnen Zeichen. In JavaScript werden sie deshalb als Objekt behandelt. Aus diesem Grund existieren auch verschiedene Methoden, mit denen ein String manipuliert werden kann.
- Mit der Methode
length
kann die Länge einer Zeichenkette ermittelt werden. - Die Methoden
toLowerCase
undtoUpperCase
wandeln eine Zeichenkette entweder in Kleinbuchstaben oder in Großbuchstaben um. - Mit der Methode
indexOf
kann auf das erste Vorkommen eines Zeichens ab einer bestimmten Position geprüft werden. - Weitere Methoden geben z. B. einen Teil der Zeichenkette zurück.
# Fragen und Übungen
- Schreiben Sie ein Script, das alle deutschen Umlaute einer Zeichenkette durch die entsprechenden HTML-Entities ersetzt. Besonders hilfreich zur Lösung der Aufgabe ist die
switch
-Anweisung. - Schreiben Sie ein Script, das anhand eines bestimmten Zeichens bzw. einer Zeichenfolge einen String in zwei Teile zerlegt. Der erste String soll dem Teil vom Anfang der Zeichenkette bis zum Beginn der Trennzeichenkette enstprechen und der zweite String dem Teil der Zeichenkette vom Ende der Trennzeichenkette bis zum Ende der Zeichenkette.