我想获取由3个元素分隔的Array的字符串。例如,我需要跳过3个元素0,1,2,并取3,4,5个元素。重复一遍。(跳过6,7,8并获得9,10,11),直到数组结束。我该怎么办?
String s1[] = hh.split("\\r?\\n");
System.out.println(s1[3]);
for (int i=0;i<s1.length; i++){
}
Run Code Online (Sandbox Code Playgroud)
子串输出:
org.springframework
spring-jdbc
1.0-m4
org.apache.tomcat
tomcat-jdbc
7.0.19
commons-configuration
commons-configuration
20030311.152757
commons-io
commons-io
0.1
org.springframework.security.oauth
spring-security-oauth2
2.1.1.RELEASE
Run Code Online (Sandbox Code Playgroud)
使用模运算符和单个循环的解决方案。没有IndexOutOfBounds的风险。
for (int i = 0; i < list.length; i++) {
if (i % 6 > 2) {
System.out.println(list[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
i % 6 < 3如果要代替数组中每6个元素中的前3个元素,则可以翻转条件。
编辑:下面将您的输入,并将其放在List<String[]>每个元素包含3行的位置。
import java.nio.file.*;
import java.util.stream.Stream;
import java.util.*;
import java.nio.charset.Charset;
public class Partition2 {
public static void main(String[] args) {
String[] input = ...
try (Stream<String> stream = Arrays.stream(input)) {
// /sf/answers/2433164541/
String[] array = stream.map(line -> line.trim()).filter(line -> !line.isEmpty()).toArray(String[]::new);
List<String[]> results = new ArrayList<String[]>();
String[] tmp = new String[3];
for (int i = 0; i < array.length; i++) {
tmp[i % 3] = array[i];
if (i % 3 == 2) {
results.add(tmp);
tmp = new String[3];
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)