Ich muss eine String-Basis auf Trennzeichen -
und teilen .
. Unten sind meine gewünschten Ausgaben.
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("-\\.");
}
AA
/BB
/CC
...)Antworten:
Ich denke, Sie müssen den Regex- OR-Operator einschließen :
Was Sie haben, wird übereinstimmen:
[DASH gefolgt von DOT zusammen]
-.
nicht
[DASH oder DOT eines von ihnen]
-
oder.
quelle
.
Zeichen in Regex bedeutet ein anderes Zeichen als eine neue Zeile. tutorialspoint.com/java/java_regular_expressions.htm In diesem Fall wollten sie jedoch den tatsächlichen Charakter.
. Die beiden Backslashes zeigen an, dass Sie sich beziehen.
. Der Backslash ist ein Escape-Charakter..split("match1|match2")
, (z. B.split("https|http")
\\ ist das besondere Zeichen zu entkommen).
in obiger FallpdfName.split("\\W");
wie unten @Peter Knego Antwort verwenden[-.]
anstelle von-|\\.
Versuchen Sie diesen regulären Ausdruck
"[-.]+"
. Das + nach behandelt aufeinanderfolgende Trennzeichen als eins. Entfernen Sie plus, wenn Sie dies nicht möchten.quelle
-
war, dass es der erste Gedanke in der war[]
, sonst müsste es einen Backslash davor geben (und natürlich, um einen Backslash davor zu setzen, wir brauche zwei, weil dies ein String-Literal ist).Sie können den regulären Ausdruck "\ W" verwenden. Dies entspricht jedem Nicht-Wort-Zeichen. Die erforderliche Zeile wäre:
quelle
\W
.Die Zeichenfolge, die Sie geben
split
ist die Zeichenfolgenform eines regulären Ausdrucks.Das bedeutet, dass
[]
wir uns auf jedes Zeichen in der Zeichenfolge aufteilen müssen (wir müssen-
mit einem Backslash entkommen, weil es innen etwas Besonderes ist[]
; und natürlich müssen wir dem Backslash entkommen, weil dies eine Zeichenfolge ist). (Umgekehrt.
ist es normalerweise etwas Besonderes, aber innen nichts Besonderes[]
.)quelle
[-.]
möglicherweise nicht als Bereich interpretiert werden kann.String[] strings = codes.get(x).split("\\[|\\]| ");
<- Code für alle InteressiertenMit Guava können Sie Folgendes tun:
quelle
Für zwei Zeichenfolgen als Trennzeichen "UND" und "ODER" sollte dies funktionieren. Vergessen Sie nicht, während des Gebrauchs zu trimmen.
Ergebnis: Städte = {"ISTANBUL", "NEW YORK", "PARIS", "TOKYO", "MOSKAU"}
quelle
Ich würde Apache Commons verwenden:
importieren
org.apache.commons.lang3.StringUtils;
Es wird auf jedes der angegebenen Trennzeichen aufgeteilt, im Gegensatz dazu
StringUtils.splitByWholeSeparator(str, separator)
wird die vollständige Zeichenfolge als Trennzeichen verwendetquelle
quelle
Es ist besser, so etwas zu verwenden:
Habe ein paar andere Zeichen als Beispiel hinzugefügt. Dies ist der sicherste Weg, weil der Weg
.
und'
behandelt wird.quelle
Sie können auch einen regulären Ausdruck als Argument in der split () -Methode angeben. Siehe Beispiel unten ....
quelle
Versuchen Sie diesen Code:
quelle
sollte arbeiten.
quelle
Wenn Sie wissen, dass der Stich immer das gleiche Format hat, 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 folgenden Ausschnitt:
quelle
pdfName.split(".")
führt zu einem Array mit der Länge Null..
Muss als\\.