Kleines Nachschlagewerk Informatik
Zeichenketten (Strings)
Worum geht es?
Möchte man Texte speichern, braucht man dafür einen speziellen Variablentyp. Diesen muss man jedich von den in einzelnen Sprachen vorhandenen Zeichentyp (Character) unterscheiden.

Zeichenkettenvariablen müssen genau so angelegt werden wie andere Variable auch. Weiterhin bieten viele Sprachen Unterstützung für die Arbeit mit Zeichenketten kann. Man kann deren Länge erfragen, Zeichenketten umwandeln und zusammen fügen usw.

Zeichenketten nennt der Fachmann auch Strings.
Java
Wie bei einer normalen Variablen müssen Typ und Name festgelegt werden. Allerdings muss auch ein Wert zugewiesen werden. Das muss nicht sofort geschehen, aber es muss erledigt sein, bevor das erste Mal mit der Variablen gearbeitet wird.

Text wird - im gegensatz zu Zeichen - in doppelte Anführungszeichen gesetzt.

      String text = "OMA";  // korrekt
      String andererText;   // auch korrekt, aber noch nicht verwendbar
      andererText = "OPA";  // Nun kann mit andererText
                            // gearbeitet werden.
      String leererText = "";
            
Im letzten Beispiel sieht man, wie ein leerer Text, also ein Text ohne Zeichen, aussieht. Ein leerer Text ist somit etwas anderes als eine nicht initialisierte Variable (siehe zweite Zeile).

Leere Texte werden für spezielle Tricks recht häufig gebraucht.
TI-82
Der TI-82 hat keine Zeichenkettenvariablen.
Scratch
In Scratch sind es ganz normale Variable, man gibt statt einer Zahl einfach den Text an. Hochkommas wie in anderen Sprachen sind nicht notwendig.



Vergleichen von Zeichenketten
Genau so wie man zwei Zahlen vergleichen kann, kann man auch Zeichenketten vergleichen. Bei manchen Sprachen ist der Vergleich mit einem Gleichheitszeichen jedoch falsch, denn er bedeutet: absolut gleiche Zeichenkette, also gleicher Speicherbereich. Oft meint man etwas anderes: nämlich: gleicher Inhalt. Wie Strings verglichen werden dürfen, soll für die einzelnen Sprachen gezeigt werden.

Es ist darauf zu achten, dass Groß- und Kleinbuchstaben (i.A.) unterschieden werden. "Oma" ist nicht "OMA" und auch nicht "oma". Man beachte bitte auch, dass Leerzeichen ganz normale Zeichen sind. "OMA " ist nicht "OMA".
Java (2)
In Java darf Zeichenketten niemals mit Gleichheitszeichen vergleichen. Strings sind Objekte, also größere Datenpakete. Vergleicht man mit Gleichheitszeichen, testet man, ob zwei Zeichenketten identisch sind, also den gleichen Platz im Speicher belegen. Im Normalfall interessiert jedoch, ob der Inhalt - also der Text - gleich ist. Es geht also darum - nimmt man das Beispiel Auto - zu testen, ob es sich um das gleiche, nicht um das selbe Auto handelt.

Für diesen Test gibt es den Befehl (die Methode) equals. Sie bekommt als Parameter den Vergleichstext und liefert einen booleschen Wert zurück. Befehle des Objektes (Methoden), hängt man mit einem Punkt an den Text.

      String text = "OMA";
      if (text.equals("OPA"))
      {
          System.out.println("Es war Opa");
      {
      else if (text.equals("OMA"))
      {
          System.out.println("Es war Oma");
      }
      else
      {
          System.out.println("Es war jemand anderes");
      }
            
Scratch (2)
In Scratch ist es erlaubt, Texte mit Gleichheitszeichen zu vergleichen. ACHTUNG! Scratch unterscheidet nicht zwischen Groß- und Kleinbuchstaben. Hier ist Oma und OMA tatsächlich gleich! (Scratch ist damit eine Ausnahme)



Länge einer Zeichenkette
Sehr häufig ist es wichtig heraus zu finden, wie viele Zeichen in einer Zeichenkette stehen, also wie lang diese ist. Alle Sprachen bieten hierfür Befehle an.
Java (3)
Möchte man nun herausfinden, wie lang der Text (in einer Variablen) ist, kann man den Befehl (die Methode) length() benutzen.

      String text = "OMA";
      int laenge = text.length(); // in laenge steht nun 3
            
Scratch (3)
Auch Scratch kennt einen Befehl für die Länge. Das Ergebnis bei diesem Beispiel ist 10, da auch das Leer- und das Ausrufezeichen mit gezählt werden.



Zusammenfügen von Zeichenketten
Zeichenketten kann man zusammenfügen. Oft geschieht dies, weil es eine Art Addition ist, mit dem Plus-Zeichen. Es ist zu beachten, dass Leerzeichen nicht automatisch eingefügt werden. "Hallo" und "Oma" ergeben zusammen "HalloOma".
Java (4)
Zeichenketten kann man mit + zusammenfügen.

      String begruessung = "Hallo " + derName + "!";
            
Scratch (4)
In Scratch gibt es einen Befehl, der zwei Texte zusammen fügt.



Umwandlung von Text in Zahl
Texte und Zahlen sind für einen Computer zwei verschiedene Dinge. Oft passiert es, dass Zahlen, mit denen gerechnet werden soll, eingegeben werden müssen (zum Beispiel in einem Textfeld). Im Textfeld steht beispielsweise "123", also ein Text, bestehend aus den Zeichen 1,2 und 3. Was man aber gern haben möchte, ist eine Zahl 123. Da die Umwandlung nicht ganz einfach ist, kann man vorgefertigte Befehle nutzen.
Java (5)
Im folgenden Beispiel steht in der Variablen zahlText eine Zahl, aber eben noch als Zeichenkette.

      int ganzeZahl = Integer.parseInt(zahlText);
      double kommaZahl = Double.parseDouble(zahlText);
            
Steht in der Variablen zahlText Müll (z.B. "OMA", was man nicht in eine Zahl umwandeln kann), dann stürzt das Programm ab. Helfen kann man sich mit einem try-catch-Block, der diesen Fehler abfängt. Mehr dazu in den ergänzenden Themen .

      int zahl = 0;
      try
      {
          zahl = Integer.parseInt(zahlText);
      }
      catch (Exception e)
      {
          System.out.println("Das ist doch keine Zahl: " + zahlText);
      }
            
Scratch (5)
Scratch wandelt Zahlen und Texte automatisch um.
Umwandlung von Zahlen in Texte
Sollen Ergebnisse als Text ausgegeben werden, müssen sie (manchmal - je nach Situation und Befehl) in text umgewandelt werden. Auch dafür gibt es Unterstützung.
Java (6)
Die Umwandlung von Zahlen in Text geht in Java einfach. Wird eine Zahl zu einer Zeichenkette addiert, so erledigt Java die Umwandlung automatisch:

      int zahl = 6 * 7;
      String "Das Ergebnis ist " + zahl;
            
Möchte man nur eine Zahl ohne vorhergehenden String umwandeln, kann man dieses Verfahren ebenfalls anwenden. Man hilft sich mit einer leeren Zeichenkette.

      String zahlText = "" + zahl;
            
Scratch (6)
Scratch erledigt dies automatisch.
Abfrage einzelner Zeichen
Die Abfrage einzelner Zeichen einer Zeichenkette ist eine Standardaufgabe. Möchte man z.B. wie bei der Caesar-Verschlusselung jeden einzelnen Buchstaben verändern, muss man diesen erfragen.
Java (7)
Einzelne Zeichen kann man mit der Methode charAt erfragen, welche die Nummer des Zeichens benötigt. Das Zählen beginnt bei 0.

Folgendes Beispiel erfragt alle Zeichen der Zeichenkette text.

      int i = 0;
      while (i < text.length())
      {
          char z = text.charAt(i);
          ... irgendwas mit dem Zeichen machen ...
      }
            
Da bei 0 angefangen wird zu zählen, gibt es das Zeichen text(charAt(text.lenght()) nicht!
Scratch (7)
Scratch kann ebenfalls einzelne Zeichen abfragen. Scratch beginnt aber mit dem Zählen bei 1 und endet bei "Länge von ...". Das Beispiel zeigt, wie alle Buchstaben von hinten nach vorn erfragt und wieder aneinander gekettet werden. Die Zeichenkette wird also umgekehrt.



Umwandlung in Groß- und Kleinbuchstaben
In Zeichenketten wird zwischen Groß- und Kleinbuchstaben unterschieden. Um beim Vergleich mit einem Wort, bei dem man nicht weiß, wie jemand es geschrieben hat, nicht alle Möglichkeiten durchtesten zu müssen (Wort, WORT, wort,...), empfiehlt sich die Umwandlung in Groß- oder Kleinbuchstaben.
Java (8)

      String text = "Oma";
      String nurGross = text.toUpperCase(); // ergibt "OMA"
      String nurKlein = text.toLowerCase(); // ergibt "oma"
            
Scratch (8)
In Scratch ergibt dies keinen Sinn.
Teile von Zeichenketten
Aus Zeichenketten lassen sich Teile herausnehmen.
Java (9)
In Java nimmt man den Befehl substring. Dazu gibt man den ersten Buchstaben und den nach dem letzten an.

      String text = "A und B sassen auf dem Dach";
      String und = text.substring(2, 5);
      String text = text.substring(0, text.length()-1)); // löscht das letzte Zeichen
            
Scratch (9)
Scratch bietet dies nicht an.