我已经在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(",");
答案 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"});
}
}