我有阵列
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]);
}
}
是否有更简单,更有效的方法?
由于
答案 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