在JAVA中选择数组每列中的元素j

时间:2017-03-16 12:21:24

标签: java arrays string vector split

我有阵列

String[] test_=new String[] {"a b c d", "f g h i","j k l s gf"};

现在我想创建另一个包含元素

的数组
{"b d", "g i","k s"}

我该怎么做?

我设法使用

将数组分成行
String split_test[] = null;
for (int j = 0 ; j <= 2 ; j++) {
      split_test=test_[j].split("\\s+");
      System.out.println(Arrays.toString(split_test));
}

但是现在我想将每一行分开,我尝试了解决方法 How to Fill a 2d array with a 1d array?结合类似这样的事情split_test = test_ [j] .split(&#34; \ s +&#34;),但我还没能解决它。

另外如果我按照他们说的做,我必须使数组split_test有许多特定的列,但我想要的是split_test列的大小取决于数组test_。例如,如果我想要一个包含元素的数组{&#34; b d&#34;,&#34; g i&#34;,&#34; k s gf&#34;}

String[][] split_test = new String[3][2];
for(int row = 0; row < split_test.length; row++) {
    for(int col = 0; col < split_test[row].length; col++) {
        split_test[row][col] = test_[row];/*I still don't understand how to use the split within the for*/
        System.out.println(split_test[row][col]);
    }
}

是否有更简单,更有效的方法?

由于

3 个答案:

答案 0 :(得分:0)

你应该使用2维数组,你可以通过以下方式创建一个:

String[][] input=new String[][] {{"a","b","c","d"}, {"f","g","h","i"},{"j","k","l","s"}};

然后您可以执行以下操作来检索{{"b","d"}, {"g","i"},{"k","s"}}

String[][] output = new String[input.length][2];
for(int i = 0; i<input.length; i++)
{
  output[i] = new String[]{input[i][1],input[i][3]};
}

System.out.println(Arrays.deepToString(output));

答案 1 :(得分:0)

我使用了一种不同的方法。我注意到你只采用不均匀的索引,因此我的模数方法:

    String[] array = new String[] {"a b c d", "f g h i","j k l s gf"};
    String[] result = new String[array.length];
    for(int i = 0; i < array.length; i++) {
        String subresult = "";
        String[] array2 = array[i].split(" ");
        for(int j = 0; j < array2.length; j++) {
            if(j % 2 == 1)
                subresult += array2[j] +" ";
        }
        result[i] = subresult.trim();
    }

答案 2 :(得分:0)

这是另一个。 您可以使用substring类的String方法。 或者使用split方法返回的数组的索引。

    String output[] = new String[test_.length];
    String split_test[] = null;
    for (int j = 0; j < test_.length(); j++) {
        split_test = test_[j].split("\\s+");

        // use direct index
        // output2[j] = split_test[1] + " " + split_test[3];
        // or based on length
        output[j] = split_test[1] + " " + split_test[split_test.length - 2];
    }
    System.out.println(Arrays.toString(output));

输出:

b d
g i
k s