2017-12-09 1 views
0

Ich habe bereits den String Wert2 auf das Zeichen "-" aufgeteilt und seine Werte in einem neuen Array gespeichert, wie Sie sehen können. Jetzt möchte ich den String wieder auf dem "," trennen und in einem neuen Array wieder speichern, aber es funktioniert nicht. Es trennt immer nur den zweiten Namen mit der Nummer. Und überschreibt das erste. Also habe ich im ersten Array auf [0]: Peter, 2 und in [1]: Leo, 1 und im zweiten Array gerade auf [0] Leo und auf [1] 1.So teilen Sie String auf zwei verschiedene Zeichen

ich kenne meine for loop ist falsch und ich weiß nicht, wie ich es beheben kann.

final int value = 2; 
    final String value2 = "Peter,2-Leo,1"; 


    String[] splittedStringOne = new String[value]; 
    String[] splittedStringTwo = new String[splittedStringOne.length*2]; 


    splittedStringOne = value2.split("-"); 



    for(int i=0;i<splittedStringOne.length;i++) { 
     splittedStringTwo=splittedStringOne[i].split(","); 
+0

Haben Sie versucht mit zweidimensionalen Array? – vinS

+0

Was ist Ihr erwartetes Ergebnis? –

+0

Ich würde vorschlagen, alle "-" zu "," erst dann durch "," zu teilen. Auf diese Weise teilen Sie sich nur einmal und erhalten das gewünschte Array. – Santosh

Antwort

0

splittedStringTwo sein muss 2 dimensional.

String[][] splittedStringTwo = new String[splitedStringOne.length][2]; 

for(int i =0; i < splittedStringTwo.length; i++) 
    splittedStringTwo[i] = splittedStringOne[i].split(","); 

Oder wenn Sie nicht ein 2-dimensionales Array wollen:

String[] splittedStringTwo = new String[splittedStringOne.length*2]; 

for(int i = 0; i < splittedStringTwo.length; i+=2){ 
    String[] split = splittedStringOne[i].split(","); 
    splittedStringTwo[i] = split[0]; 
    splittedStringTwo[i+1] = split[1]; 
} 

EDIT: Für Fragen in den Kommentaren. Probieren Sie dies aus, es ist nicht getestet, aber es sollte

String[][] splittedStringTwo = new String[splittedStringOne.length*2][2]; 

for(int i = 0; i < splittedStringTwo.length; i+=2){ 
    String[] split1 = splittedStringOne[i].split(","); 
    String[] split2 = splittedStringOne[i+1].split(","); 
    splittedStringTwo[i][0] = split1[0] 
    splittedStringTwo[i][1] = split2[0]; 
    splittedStringTwo[i+1][0] = split1[1] 
    splittedStringTwo[i+1][1] = split2[1]; 
} 
+0

Aber wie kann ich das splittedStringTwo Array, das ich dann habe füllen: {{Peter, Leo}, {2,1}} – JacktheMouse

+0

Was meinst du? –

+0

Ich möchte in der zweiten Dimension alle Namen getrennt und alle Zahlen getrennt. Die Eingabe String ist: Peter, 2-Leo, 1. Und dann spalte ich zweimal und am Ende möchte ich in der 2D-Anordnung {{Peter, Leo}, {2,1}} haben. Nicht {{Peter, 2}, {Leo, 1}}. – JacktheMouse

-1

können Sie verwenden arraycopy das Ergebnis splittedStringOne[i].split(","); in die richtige Position von splittedStringTwo

wie zu kopieren:

public class ArrayCopyTest { 

    @Test public void test() { 
     final String value2 = "Peter,2-Leo,1"; 

     String[] splittedStringOne = value2.split("-"); 
     String[] splittedStringTwo = new String[splittedStringOne.length*2]; 

     for(int i=0;i<splittedStringOne.length;i++) { 
      // splittedStringTwo = splittedStringOne[i].split(","); 
      System.arraycopy(splittedStringOne[i].split(","), 0, splittedStringTwo, i * 2, 2); 
     } 
     Assert.assertArrayEquals(splittedStringTwo, new String[]{"Peter", "2", "Leo", "1"}); 
    } 

} 
1

arbeiten Unter der Annahme, dass Ihr splittedStringOne die richtigen Werte im Index enthält [0] und [1], in der for-Schleife, Sie überschreiben nur den Inhalt von splittedStringTwo . Da String.split ('') ein Array zurückgibt, sollten Sie auch machen splittedStringTwo zweidimensionale:

String[][] splittedStringTwo = new String[splitedStringOne.length][2]; 

Dies sollte für Schleife für die Arbeit:

for(int i=0;i<splittedStringOne.length;i++) { 
    splittedStringTwo[i] = splittedStringOne[i].split(","); 
    } 

Anmerkung, die ich hinzugefügt [i ] to splittedStringTwo

Verwandte Themen