Beispiel - Java String methods
Ein STRING ist eine Sequenz von Zeichen (alphanumerisch, numerisch und Sonderzeichen).
Die STRING Klasse beinhaltet Methoden zum prüfen und behandeln von bestimmten Zeichen.
Mit dem vorgegebenen String Methoden kann man:
- Strings vergleichen (compare)
- in Strings suchen (IndexOf)
- Teile vom String extrahieren (substring)
- bestimmte Zeichen austauschen (replace)
- oder zerteilen (split)
- wieder zusammen fügen (concat)
- umwandeln in Klein- oder Großbuchstaben (toUppercase, toLowerCase)
Strings werden immer innerhalb
eines doppeltes Anführungszeichen deffiniert:
String sName = "Raimund";
und Zeichen (characters)werden immer innerhalb eines einfachen Anführungszeichen deffiniert.
char data[] = {'R', 'A', 'I'};
Auch ein String ist nur ein Objekt
Wenn man es genau betrachtet,
ist ein Java-String (und Strings andere OO-Sprachen) auch nur ein Objekt.
- java.lang.String
Man könnte aber explizit
von dem Java-String ein Objekt referenzieren
- java.lang.Object
Indem ich ein Objekt initialisiere (initialisation)
und dem String ein Objekt zuordne (assignment)
String a = "abc";
Object b = a;
Die gebräuchlichste Methode um einen String zu erzeugen
(deklaration und initialisation in einem Schritt)
String sName = "Raimund Stachowiak";
In diesem Falle ist "Raimund Stachowiak"ein String Literal,
also eine Zeichenfolge,
eingebettet in doppelte Anführungszeichen.
den Wert dieses Strings kann man zur Laufzeit ändern.
Und wie auch bei jedem anderen Objekt,
kann man auch ein String Objekt
mit dem Schlüsselwort "new" und einem Konstruktor (constructor) erzeugen.
String sName = new String("Raimund Stachowiak");
Die Bezeichung String-Literal findet man auch häufig bei Fehlermeldungen, zum Beispiel beim Insert or Update einer Datenbanktabelle:
string literal too long
String nicht änderbar, mit static
Es gibt auch Fälle,
wo man nicht möchte,
dass ein String während der Laufzeit änderbar ist.
Beispielsweise ein ODBC connection Sting,
sollte immer gleich bleiben.
Hierfür ist das Schlüsselword "static" wichtig.
Wurde als ein String mit "static" deklariert und initialisiert,
so ist der String-Wert immer gleich und kann nicht geändert werden.
Hier ein Beispiel mit privat static String:
private final static String sODBCconnect = "username:xyz;password:12345";
Beispiel - Java split string
Die Java split string funktion ist ähnlich wie bei anderen Sprachen
recht einfach in eine Applikation zu implemetieren.
Beispiel split String:
zunächst deklarieren wir einen String
und initieren dieses String Objekt "sName" gleich mit einem Wert:
String sName = "Raimund-Stachowiak";
Dieser String wird dann an einen Array übergeben.Also wir initialisieren einen (String-) Array vom String Objekt: sName
String[] aName = sName.split("-");
dann machen wir die Ausgabe (mit System.out.print) vom String Array
System.out.print("Vorname:" + aName[0]);
System.out.print("Nachname:" + aName[1]);
Das obige Beispiel ist ein wenig gutgläubig, denn wir gehen davon aus, dass der Array nur die 2 Werte enthält.
Etwas besser geht es,
wenn man noch Zusatzprüfungen (validierungen) einbaut:
- check String indexOf
- check array length
- oder diese in eine FOR-Schleife einbaut
Beispiel ohne FOR-Schleife:
String sName = "Raimund-Stachowiak";
if(sName.indexOf("-")){
String[] aName = sName.split("-");
if(aName.length == 2){
System.out.print("Vorname:" + aName[0]);
System.out.print("Nachname:" + aName[1]);
}
}
Beispiel mit FOR-Schleife:
hier fällt somit die Prüfung if(aName.length == 2) weg
String sName = "Raimund-Stachowiak";
if(sName.indexOf("-")){
String[] aName = sName.split("-");
for(int i=0;i<aName.length;i++){
System.out.println( "aName:" + aName[i]);
}
}
Etwas schwieriger wird es nur,wenn der String Sonderzeichen enthält,
die sich nicht einfach so splitten (zerlegen) lassen
Escape ist das Schlüsselword (Java Escape Sequences)
Beispiel, split String mit escape:
- Split-String mit Sonderzeichen "Punkt" und Escape
String sName = "raimund.doc";
String[] aName = sName.split("\\.");
for(int i=0;i<aName.length;i++){
System.out.println( "aName:" + aName[i]);
}
oder alternativ:
System.out.println( "aName:" + aName.length);
System.out.println( "aName:" + aName[0] + " " + aName[1]);