Galileo Computing < openbook >
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.


Java ist auch eine Insel von Christian Ullenboom
Buch: Java ist auch eine Insel (Galileo Computing)
gp Kapitel 4 Der Umgang mit Zeichenketten
gp 4.1 Strings und deren Anwendung
gp 4.1.1 String-Objekte für konstante Zeichenketten
gp 4.1.2 String-Länge
gp 4.1.3 Gut, dass wir verglichen haben
gp 4.1.4 String-Teile extrahieren
gp 4.1.5 Suchen und Ersetzen
gp 4.1.6 Veränderte Strings liefern
gp 4.1.7 Typen in Zeichenketten konvertieren
gp 4.2 Veränderbare Zeichenketten mit der Klasse StringBuffer
gp 4.2.1 Anlegen von StringBuffer-Objekten
gp 4.2.2 Die Länge eines StringBuffer-Objekts lesen und setzen
gp 4.2.3 Daten anhängen
gp 4.2.4 Zeichen(folgen) setzen, erfragen, löschen und umdrehen
gp 4.3 Vergleiche von Zeichenketten
gp 4.3.1 equals() in String und StringBuffer
gp 4.3.2 Sollte es ein equals() und hash() bei StringBuffer geben?
gp 4.3.3 Sprachabhängiges Vergleichen mit der Collator-Klasse
gp 4.3.4 Effiziente interne Speicherung für die Sortierung
gp 4.4 Zeichenkodierungen umwandeln
gp 4.5 Die Klasse StringTokenizer
gp 4.6 Der BreakIterator als Wort- und Satztrenner
gp 4.7 Formatieren mit Format-Objekten
gp 4.7.1 Prozente, Zahlen und Währungen ausgeben
gp 4.7.2 Ausgaben formatieren
gp 4.7.3 Dezimalzahlformatierung
gp 4.8 Reguläre Ausdrücke
gp 4.8.1 Splitten von Zeichenketten
gp 4.8.2 split() in String
gp 4.8.3 Das alternative Paket org.apache.regexp


Galileo Computing

4.6 Der BreakIterator als Wort- und Satztrennertoptop

Zeichenketten werden von Benutzern aus ganz unterschiedlichen Gründen durchlaufen. Einige wollen jedes Zeichen bearbeiten, andere wiederum suchen in der Zeichenkette nach Wort- oder Satztrennern. Sun sieht für diese Aufgabe im Java-Paket java.text die Klasse BreakIterator vor. Dieser Iterator lässt sich mit statischen Methoden erzeugen, die optional auch nach einer Sprache trennen. Keine übergebene Sprache bedeutet automatisch die gefundene Standardsprache.


abstract class java.text.BreakIterator
implements Cloneable, Serializable

gp static BreakIterator getCharacterInstance()
static BreakIterator getCharacterInstance( Locale where )
Trennt nach Zeichen. Entspricht einer Iteration über charAt().
gp static BreakIterator getLineInstance()
static BreakIterator getLineInstance( Locale where )
Trennt nach Zeilen.
gp static BreakIterator getSentenceInstance()
static BreakIterator getSentenceInstance( Locale where )
Trennt nach Sätzen.
gp static BreakIterator getWordInstance()
static BreakIterator getWordInstance( Locale where )
Trennt nach Wörtern. Trenner wie Leerzeichen und Satzzeichen gelten ebenfalls als Wörter.

Das nächste Beispiel zeigt, wie ohne großen Aufwand durch Zeichenketten gewandert werden kann. Die Verwendung eines StringTokenizers ist nicht nötig. Einmal sollen die Wörter und einmal die Sätze ausgegeben werden. Die Hilfsfunktion out() gibt die Abschnitte der Zeichenkette bezüglich eines Iterators aus.

Listing 4.4 StringVerpfluecker.java

<
import java.text.BreakIterator;
import java.util.Locale;
public class StringVerpfluecker
{
  static void out( String s, BreakIterator iter )
  {
    int last = iter.first();
    int next = iter.next();    // erstes Wort einlesen.
    for ( ; next != BreakIterator.DONE; next = iter.next() )
    {
      System.out.println( s.subSequence( last, next ) );
      last = next;
    }
  }
  
  public static void main( String args[] )
  {
    String helmutKohl = "Ich weiß, dass ich 1945 fünfzehn war und 1953 achtzehn.";
    
    BreakIterator iterator = BreakIterator.getWordInstance();
    iterator.setText( helmutKohl );
    out( helmutKohl, iterator );
    
    helmutKohl = "Das deutsche Volk hat nun mal beschlossen, weniger Kinder zu zeugen. "+
      "Das ist eine Sache, die wir nicht einmal den Sozialdemokraten anhängen können.";
    
    iterator = BreakIterator.getSentenceInstance( Locale.GERMAN );
    iterator.setText( helmutKohl );
    out( helmutKohl, iterator );
  }
}




Copyright (c) Galileo Press GmbH 2004
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de