Wie kann ich einen Satz zerlegen?

Ein String kann mit Hilfe der Methode split() in einzelne Teile zerlegt werden.

public class SatzZerlegenClass { 
    public static void main(String[] args){
        // String als Trennzeichen
        String[] string_result = "Dies ist ein Test".split("e");
        for (int x=0; x<string_result.length; x++){
            System.out.println(string_result[x]);
        }
        
        // regex als Trennzeichen
        String[] regex_result = "Dies ist ein Test".split("\\s");
        for (int x=0; x<regex_result.length; x++){
            System.out.println(regex_result[x]);
        }
    }
}

Die Methode split() erlaubt es, einen String an einer bestimmten Stelle zu zerlegen und die Teile als Array zu speichern. Das Trennzeichen muss als regulärer Ausdruck als Parameter übergeben werden.

Die Methode ist überladen und kann neben dem ersten Parameter noch einen zweiten numerischen int-Wert übergeben bekommen. Mit diesem kann die Ausgabe insofern begrenzt werden, als er die Häufigkeit angibt, in der der reguläre Ausdruck angewendet wird. Dadurch wird indirekt natürlich auch die Länge des resultierenden Arrays begrenzt.
Ist dieser Wert größer als 0, so wird er n-1 mal angewendet und das zurück gegebene Array ist nicht gößer als n.
Bei negativen Werten für n wird der reguläre Ausdruck beliebig oft angewendet und das Array kann eine beliebige Größe erreichen. Ist n gleich 0, so wird der Ausdruck ebenfalls beliebig oft angewendet, gleichzeitig werden jedoch auch Leerstring-Einträge am Ende des Ergebnis-Arrays entfernt.

import java.util.Arrays;

public class SatzZerlegen2Class { 
    public static void main(String[] args){
        String s = "Dies ist ein Tee-Test und das ist Tee";
        
        String[] stringResult = s.split("e", 3);
        System.out.println(Arrays.toString(stringResult));
        stringResult = s.split("e", 10);
        System.out.println(Arrays.toString(stringResult));
        stringResult = s.split("e", -3);
        System.out.println(Arrays.toString(stringResult));
        stringResult = s.split("e", -10);
        System.out.println(Arrays.toString(stringResult));
        stringResult = s.split("e", 0);
        System.out.println(Arrays.toString(stringResult));
    }
}

Das Ergebnis zeigt, dass die letzten beiden Leerstrings am Ende des Arrays entfernt werden, wenn als zweiter Parameter 0 eingetragen wird:

[Di, s ist , in Tee-Test und das ist Tee]
[Di, s ist , in T, , -T, st und das ist T, , ]
[Di, s ist , in T, , -T, st und das ist T, , ]
[Di, s ist , in T, , -T, st und das ist T, , ]
[Di, s ist , in T, , -T, st und das ist T]

Ab der Version 21 bietet Java in den Klassen java.lang.String und java.util.regex.Pattern noch eine Methode splitWithDelimiters(CharSequence input, int limit), die neben den Teilstrings zusätzlich die Trenner in einem String-Array zurückgibt:

String s = "Just think about these things in your mind"
         + "- then bring them into your world. Fluff that up."
         + " Just make a decision and let it go. Let your imagination"
         + " just wonder around when you're doing these things."
         + " All kinds of happy little splashes."
         + " Everyone is going to see things differently "
         + "- and that's the way it should be.";
 String[] strs = s.splitWithDelimiters("y.", 0);
 for (String str : strs) {
     System.out.println(str);
 }

Die Ausgabe sieht wie folgt aus, wobei die o.a. Funktion des zweiten Parameters auch hier gilt.

Just think about these things in 
yo
ur mind- then bring them into 
yo
ur world. Fluff that up. Just make a decision and let it go. Let 
yo
ur imagination just wonder around when 
yo
u're doing these things. All kinds of happ
y 
little splashes. Ever
yo
ne is going to see things differentl
y 
- and that's the wa
y 
it should be.

Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.