2017-12-09 16 views
0

文字 "value2"をすでに分割して " - "という文字列を新しい配列に保存しました。今度は、 "、"の上にもう一度文字列を分けて、新しい配列にもう一度保存したいのですが、うまくいきません。それは常に、番号で2番目の名前を区切ります。そして最初のものを上書きする。だから私は、上の最初の配列になった[0]:ピーター、2、[1]:レオ、1 とちょうど[0]レオ上と[1] 1.2つの異なる文字で文字列を分割する方法

私が知っている上で二番目の配列の私forループが間違っていて、私はそれを修正する方法を知らない。あなたが好きなsplittedStringTwo

の正しい位置にsplittedStringOne[i].split(",");の結果をコピーするためのarraycopy使用することができます

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

2次元配列で試しましたか? – vinS

+0

あなたの期待する結果は何ですか? –

+0

私はすべての " - "を "、"で置き換え、最初に "、"で区切ることをお勧めします。この方法では、1回だけ分割して目的の配列を取得します。 – Santosh

答えて

0

splittedStringTwoは2次元である必要があります。

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

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

それとも、2次元配列たくない場合:

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]; 
} 

編集:コメント欄で質問の を。それはテストされていませんが、それはあなたのsplittedStringOne [0]インデックスで正しい値が含まれており[1]、あなたのforループでは、あなただけのsplittedStringTwoの内容を上書きすると仮定すると

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

しかし、私が持っているsplittedStringTwo配列をどのように埋めることができますか:{{Peter、Leo}、{2,1}} – JacktheMouse

+0

どういう意味ですか? –

+0

私は2次元ですべての名前を区切り、すべての数字を区切りたい。入力文字列は、Peter、2-Leo、1です。そして私は2回に分割し、最終的に2D配列{{Peter、Leo}、{2,1}}に入れたいと思います。 {{Peter、2}、{Leo、1}}ではありません。 – JacktheMouse

-1

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

を動作するはずです、これを試してみてください。

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

これは、forループのために働く必要があります:私は追加

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

ノート[私のstring.Split以来 は( '')配列を返し、あなたはまた、splittedStringTwo 2次元にする必要があります] to splittedStringTwo

関連する問題