如何在两个不同的字符上拆分字符串

时间:2017-12-09 16:13:01

标签: java arrays split

我已经在char“ - ”上拆分了String value2,并将其值保存在新数组中,如您所见。现在我想在“,”上再次分离String,并将其再次保存在一个新数组中,但它不起作用。它总是只用数字分隔第二个名字。并且首先超过了第一个。所以我进入[0]的第一个数组:彼得,2和[1]:利奥,1 在[0] Leo和[1] 1上的第二个数组中。

我知道我的for循环是错误的,我不知道如何解决它。

    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(",");

3 个答案:

答案 0 :(得分:1)

假设您的splittedStringOne在索引[0]和[1]中包含正确的值,在for循环中,您将只覆盖splittedStringTwo的内容。 由于String.split(&#39;,&#39;)返回一个数组,你还应该使splittedStringTwo二维:

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

这适用于for循环:

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

请注意,我将[i]添加到splittedStringTwo

答案 1 :(得分:0)

splittedStringTwo必须是2维。

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

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

或者如果你不想要二维数组:

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

修改 对于评论中的问题。试试这个,它没有经过测试,但它应该可行

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

答案 2 :(得分:-1)

您可以使用arraycopy将splittedStringOne[i].split(",");的结果复制到splittedStringTwo的正确位置

像:

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"});
    }

}