2013-08-05 9 views
11

Voglio dividere una stringa quando seguo dei simboli "+, -, *, /, =" Sto usando la funzione split ma questa funzione può richiedere solo un argomento . Inoltre non funziona su "+". Sto usando seguente codice: -Divisione di una stringa in java su più di un simbolo

Stringname.split("Symbol"); 

Grazie.

+0

Hai iniziato con la lettura del javadoc? Ci deve essere qualche spiegazione sul perché dividere in '+' non ti dà quello che vuoi. –

+0

Magari dai un'occhiata a: http://stackoverflow.com/questions/7492672/java-string-split-by-multiple-character-delimiter – kadrian

risposta

31

String.split prende un'espressione regolare come argomento.

Questo significa che è possibile alternare qualsiasi simbolo o astrazione testo in un parametro al fine di dividere il String.

consultare la documentazione here.

Ecco un esempio nel tuo caso:

String toSplit = "a+b-c*d/e=f"; 
String[] splitted = toSplit.split("[-+*/=]"); 
for (String split: splitted) { 
    System.out.println(split); 
} 

uscita:

a 
b 
c 
d 
e 
f 

Note:

  • caratteri riservati per Pattern s devono essere a doppio scappato con \\. Modifica: Non necessario qui.
  • Le parentesi [] nel motivo indicano una classe di caratteri.
  • Altro su Pattern s here.
+0

Non c'è bisogno di sfuggire a quei meta-personaggi nella classe dei personaggi. –

+0

@RohitJain sì, appena realizzato.Ho modificato la mia risposta, grazie per aver segnalato. – Mena

+0

funziona o "+" – Saumyaraj

3

È necessario Regular Expression. Addionaly è necessario il OR operatore regex:

String[]tokens = Stringname.split("\\+|\\-|\\*|\\/|\\="); 
9

È possibile usare un'espressione regolare:

String[] tokens = input.split("[+*/=-]"); 

Nota: - deve essere posto in prima o ultima posizione per assicurarsi che non è considerato come un separatore di gamma.

+1

L'ID sostituisce "_must non essere in secondo_" con "_must be in the first or last _" ... – jlordo

+0

@jlordo 'input.split (" [+ * -/=] ");' funziona bene ... – assylias

+0

sebbene 'input.split (" [+ */- =] ");' does not ... – assylias

1

Per questo, è necessario utilizzare un'istruzione adeguata espressione regolare. La maggior parte dei simboli che hai elencato sono riservati nella regex, quindi dovrai sfuggirli con \.

Un'espressione molto di base sarebbe \+|\-|\\|\*|\=. Relativamente facile da comprendere, ogni simbolo che si desidera è sfuggito a \ e ogni simbolo è separato dal simbolo | (o). Se, ad esempio, si desidera aggiungere ^, tutto ciò che si dovrebbe fare è aggiungere |\^ a tale istruzione.

per il collaudo e veloci espressioni, mi piace usare www.regexpal.com

Problemi correlati