Verwenden Sie String.split () mit mehreren Trennzeichen

Ich muss eine Zeichenfolge Basis auf Trennzeichen - und teilen . . Unten sind meine gewünschten Ergebnisse.

AA.BB-CC-DD.zip ->

 AA BB CC DD zip 

aber mein folgender Code funktioniert nicht.

 private void getId(String pdfName){ String[]tokens = pdfName.split("-\\."); } 

Ich denke, Sie müssen den Regex OR-Operator einschließen:

 String[]tokens = pdfName.split("-|\\."); 

Was Sie haben, wird “-” entsprechen. kein “-” oder “.”

Probieren Sie diese Regex "[-.]+" . Das + after behandelt aufeinanderfolgende Delimiterzeichen als eins. Entfernen Sie Plus, wenn Sie dies nicht möchten.

Sie können die Regex “\ W” verwenden. Dies entspricht jedem Nicht-Wort-Zeichen. Die erforderliche Zeile wäre:

 String[] tokens=pdfName.split("\\W"); 

Mit Guava können Sie dies tun:

 Iterable tokens = Splitter.on(CharMatcher.anyOf("-.")).split(pdfName); 

Die Zeichenfolge, die Sie split ist die Zeichenfolgenform eines regulären Ausdrucks.

 private void getId(String pdfName){ String[]tokens = pdfName.split("[\\-.]"); } 

Das heißt, auf jedes Zeichen in [] zu teilen (wir müssen entkommen - mit einem umgekehrten Schrägstrich, weil es speziell innerhalb von [] ; und natürlich müssen wir den Backslash umgehen, weil dies eine Zeichenkette ist). (Umgekehrt ist . Regel speziell, ist aber nicht speziell in [] .)

Ich würde Apache Commons verwenden:

import org.apache.commons.lang3.StringUtils;

 private void getId(String pdfName){ String[] tokens = StringUtils.split(pdfName, "-."); } 

Es wird auf jedes der angegebenen Trennzeichen aufgeteilt, im Gegensatz zu StringUtils.splitByWholeSeparator(str, separator) , das die vollständige Zeichenfolge als Trennzeichen verwendet

Für zwei Char-Sequenzen als Delimeter “UND” und “ODER” sollte dies gearbeitet werden. Vergessen Sie nicht, während der Verwendung zu trimmen.

  String text ="ISTANBUL AND NEW YORK AND PARIS OR TOKYO AND MOSCOW"; String[] cities = text.split("AND|OR"); 

Ergebnis: cities = {“ISTANBUL”, “NEW YORK”, “PARIS”, “TOKYO”, “MOSKAU”}

Sie können auch einen regulären Ausdruck als Argument in der Methode split () angeben. Siehe folgendes Beispiel ….

 private void getId(String pdfName){ String[]tokens = pdfName.split("-|\\."); } 

Es ist besser, so etwas zu verwenden:

 s.split("[\\s\\-\\.\\'\\?\\,\\_\\@]+"); 

Habe ein paar andere Charaktere als Beispiel hinzugefügt. Dies ist die sicherste Art zu verwenden, weil der Weg . und wird behandelt.

 s.trim().split("[\\W]+") 

sollte arbeiten.

Wenn Sie wissen, dass der Stich immer im selben Format sein wird, teilen Sie zuerst die Zeichenfolge basierend auf . und speichern Sie die Zeichenfolge am ersten Index in einer Variablen. Teilen Sie dann die Zeichenfolge im zweiten Index basierend auf - und speichern Sie die Indizes 0, 1 und 2. Schließlich teilen Sie den Index 2 des vorherigen Arrays basierend auf . und Sie sollten alle relevanten Felder erhalten haben.

Siehe das folgende Snippet:

 String[] tmp = pdfName.split("."); String val1 = tmp[0]; tmp = tmp[1].split("-"); String val2 = tmp[0]; ...