2013-08-05 10 views
11

Chcę podzielić ciąg znaków, gdy śledzenie symboli symbolizuje "+, -, *, /, =" Używam funkcji podziału, ale ta funkcja może przyjąć tylko jeden argument . Ponadto nie działa na "+". Używam następującego kodu: -Dzielenie łańcucha w java na więcej niż jednym symbolu

Stringname.split("Symbol"); 

Dzięki.

+0

Czy zacząłeś od przeczytania javadoc? Musi być jakiś wyjaśnienie, dlaczego podział na '+' nie daje ci tego, czego chcesz. –

+0

Może rzucić okiem na: http://stackoverflow.com/questions/7492672/java-string-split-by-multiple-character-delimiter – kadrian

Odpowiedz

31

String.split trwa wyrażenia regularnego jako argumentu.

Oznacza to, że można zamienić dowolny symbol lub tekst na jeden parametr, aby podzielić swój String.

Zobacz dokumentację here.

Oto przykład w przypadku:

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

wyjściowa:

a 
b 
c 
d 
e 
f 

Uwagi:

  • zastrzeżone znaki dla Pattern s musi być dwukrotnie uciekł z \\. Edytuj: Nie jest to konieczne.
  • Klamry na rysunku wskazują klasę znaków.
  • Więcej o Pattern s here.
+0

Nie ma potrzeby ucieczki od tych meta-znaków w klasie postaci. –

+0

@RohitJain yep, właśnie zdałem sobie sprawę.Edytowałem swoją odpowiedź, dziękuję za wskazanie. – Mena

+0

czy to zadziałałoby, czy "+" – Saumyaraj

3

Potrzebujesz wyrażeń regularnych. Addionaly trzeba regex OR operatora:

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

Można użyć wyrażenia regularnego:

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

Uwaga: - powinny być umieszczone na pierwszej lub ostatniej pozycji, aby upewnić się, że nie jest traktowany jako separator zasięgu.

+1

Id zamień "_nie musisz być na drugim miejscu" z "_nie musisz być pierwszym lub ostatnim _" ... – jlordo

+0

@jlordo 'input.split (" [+ * -/=] ");' działa dobrze ... – assylias

+0

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

1

W tym celu należy użyć odpowiedniej instrukcji regex. Większość wymienianych symboli jest zarezerwowana w regex, więc będziesz musiał uciec z nich z \.

Bardzo podstawowym wyrażeniem byłoby \+|\-|\\|\*|\=. Relatywnie łatwy do zrozumienia, każdy symbol, którego szukasz, jest chroniony symbolem \, a każdy symbol jest oddzielony symbolem | (lub). Jeśli, na przykład, chcesz dodać także ^, wystarczy, że dodasz do tego oświadczenia |\^.

Do testowania i szybkich wyrażeń, lubię korzystać z www.regexpal.com