Wie kann man in Java das erste Wort von einem String löschen?

6 Antworten

Du musst ersteinmal definieren, was ein Wort ist. Je nachdem fällt die Implementation komplizierter oder einfacher aus.

Üblicherweise reicht ein Leerzeichen für die Identifikation einer Trennung von Wörtern in den meisten Fällen zwar aus, manchmal aber nicht. Was passiert zum Beispiel, wenn es sogenannte Zeilenumbrüche gibt oder noch schwieriger: Zeilenumbrüche mit Silbentrennung. Dann wäre das Ganze sogar noch sprachabhängig.

Im einfachsten Fall suchst du mit "Wort1 Wort2".indexOf(" ") die Stelle des ersten Leerzeichens und schneidest dann mit "Wort1 Wort2".substring(indexOfSpace) das erste Wort ab.

Danach wird es schwieriger. Man kann mit einer Regular Expression arbeiten oder die Zeichenkette parsen und auf Character.isWhitespace(...) prüfen.

Für die Unterstützung von Silbentrennung braucht man ein sprachabhängiges Dictionary mit Silbentrennungsinformationen.

Gibt es in Java sowas wie "FirstIndexOf()"? oder reagiert IndexOf() auf das erste Vorkommen? Falls ja, dann einfach ab diesem Index ein Substring bis zum Ende machen. Dein zeichen wäre ein Leerzeichen.

Andere Strategie wäre zu Split() -'en und dann den String wieder mit einer for-Schleife zusammenbasteln.

Oder ganz einfach: For-Schleife selbst bis zum ersten Leerzeichen laufen lassen und dann ein Substring am Matchpoint Leerzeichen machen. Break nicht vergessen ^^

Gruß

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Test{
    //TODO: Bei Bedarf noch weitere Worttrennzeichen hinzufügen
    private static final Pattern pattern = Pattern.compile(".*?[ \t.,]+");
    public static String stripFirstWord(String str){
        Matcher matcher = pattern.matcher(str);
        if(matcher.find())
            return matcher.replaceFirst("");
        else
            return "";
    }
}


Xearox  24.05.2018, 16:41

Mit regex würde ich auch arbeiten, aber für die Frage des Fragestellers zu Overpowered, da der Fragesteller geschrieben hat

[...] welches übrigens durch ein Leerzeichen getrennt ist

Und da reicht ein einfacher Substring

2
Isendrak  24.05.2018, 16:43
@Xearox

Whoops, das hatt ich wohl überlesen... ^^

Aber so kann mans immerhin für beliebige Zwecke verwenden (ggf. n bisschen anpassen).

0
Xearox  24.05.2018, 16:44
@Isendrak

Das hat er auch in dem Kommentar zu meiner Antwort geschrieben ;-) Aber regex ist eine super Sache!

1
PWolff  24.05.2018, 23:15
@Xearox

Und ich hätte bei einer regex den Restausdruck verwendet. So was wie

"\w+\W+(.*)"

und dann \1 extrahiert.

1

String s = "erstes zweites drittes"
s.substring(0, s.indexOf(" "));

Ein "String" ist eine Zeichenkette. Diese kennt keine Wörter im eigentlichen Sinne.

Du müsstest also diese Zeichenkette nach einem bestimmten Muster auflösen und in Bruchstücke zerlegen. Bei normaler deutschen Sprache wäre das typischer Weise das Leerzeichen.

Wenn du auf diese Weise den String in die einzelnen Wörter zerlegt hast, kannst du nun einen neuen String "formen", nur eben ohne das erste Wort.

Das ist natürlich nur eine von vielen Möglichkeiten, aber wahrscheinlich eine der einfachsten für Anfänger.

Schau dir zu diesem Ansatz mal die Methode hier an: Link

Woher ich das weiß:Berufserfahrung – Java Entwickler