2016-04-05 12 views
3

Ich habe eine Zeichenfolge wiejava Methode split() mit zwei Begrenzungszeichen

abababa:nsndnfnng.leleelld_kdjdh 

Ich will es aufzuspalten auf ":" "" und, so dass ich eine Liste erhalten, wie folgt:

{abababa, nsndnfnng, eleelld_kdjdh} 

Wie kann ich dies mit dem Aufrufen der split() einmal tun?

+0

Rufen das split() auf der Saite 2 mal, einmal auf der Original-Zeichenkette, und dann auf den Unterketten aus der ersten Stufe erzeugt wird. – rgamber

+0

auf der Suche nach einem besseren Weg. Irgendwie. – Alex

Antwort

6

Sie suchen nach String#split Methode. Da es regex akzeptiert die beschreiben Begrenzer Code wie

String[] result = yourString.split("[:.]"); 
1

sehen konnte, können Sie nur String.split("[:.]") verwenden, das ein Argument regex nimmt

Gemeinsamer pitfall Wenn Sie nur auf . allein teilen mögen Sie zu entkommen den Punkt String.split("\\.") (oder eine Zeichenklasse verwenden auch hier String.split("[.]"))

+2

':' und '.' sind in der Zeichenklasse nicht speziell. Es besteht keine Notwendigkeit, ihnen dort zu entkommen. – Pshemo

+0

"Beachten Sie, dass der Punkt. * * Als Escapezeichen verwendet werden muss." das wäre richtig, wenn "." nicht innerhalb von "[...]" wäre. Die meisten Regex-Metazeichen haben in der Zeichenklasse keine besondere Bedeutung, da sie nur einzelne Zeichen darstellen können, was bedeutet, dass wir sogar '[+ /: *()]' schreiben können, und es wird ein einzelnes '+' '' darstellen * '' ('oder') 'Zeichen. Gleiches über '[.]'. Sie können mehr Informationen hier finden: http://www.regular-expressions.info/charclass.html#special – Pshemo

+0

Sie haben Recht, da sie innerhalb einer * Zeichenklasse * sind, hat nicht darüber nachgedacht – gustf

0

Verwendung Regex und teilen Sie die Zeichenfolge

Beispiel

:

public static void main(String[] args) { 
    String REGEX_PATTERN = "[:.\\_]"; 
    String s1 = "abababa:nsndnfnng.leleelld_kdjdh"; 
    String[] result = s1.split(REGEX_PATTERN); 
    for (String myString : result) { 
     System.out.println(myString); 
    } 
}