我的程序需要在arraylist中的每个第3个元素之后添加换行符。这是我的输入文件,其中包含以下数据:
934534519137441534534534366,0796544345345345348965, 796345345345544894534565,734534534596544534538965, 4058991374534534999999,34534539624,91953413789453450452, 9137534534482080,9153453459137482080,405899137999999, 9653453564564524,91922734534779797,0834534534980001528,82342398534 6356343430001528,405899137999999,9191334534643534547423752, 3065345782642564522021,826422205645345345645621, 40584564563499137999999,953453345344624,3063454564345347, 919242353463428434451,09934634634604641264,990434634634641264, 40346346345899137999999,963445636534653452,919234634643325857953, 91913453453437987385,59049803463463453455421,405899137534534999999, 9192273453453453453758434,
它继续多行。
public class MyFile {
private static final Pattern ISDN =Pattern.compile("\\s*ISDN=(.*)");
public List<String> getISDNsFromFile(final String fileName) throws IOException {
final Path path = Paths.get(fileName);
final List<String> ret = new ArrayList<>();
Matcher m;
String line;
int index = 0;
try (
final BufferedReader reader = Files.newBufferedReader(path, StandardCharsets.UTF_8);) {
while ((line = reader.readLine()) != null) {
m = ISDN.matcher(line);
if (m.matches()) {
ret.add(m.group(1));
index++;
if(index%3==0){
if(ret.size() == index){
ret.add(m.group(1).concat("\n"));
}
}
}
}
return ret;
}
}
}
答案 0 :(得分:2)
我使用“新”Java 7文件I / O将代码更改为读取并更正了行分隔符的使用以及一些格式。在这里,我在完成后迭代列表。如果它真的很长,你可以在构建它时迭代它。
public class MyFile {
private static final Pattern ISDN = Pattern.compile("\\s*ISDN=(.*)");
private static final String LS = System.getProperty("line.separator");
public List<String> getISDNsFromFile(final String fileName) throws IOException {
List<String> ret = new ArrayList<>();
Matcher m;
List<String> lines = Files.readAllLines(Paths.get(fileName), StandardCharsets.UTF_8);
for (String line : lines) {
m = ISDN.matcher(line);
if (m.matches())
ret.add(m.group(1));
}
for (int i = 3; i < ret.size(); i+=4)
ret.add(i, LS);
return ret;
}
}
答案 1 :(得分:0)
我认为您不需要将arraylist的大小与索引进行比较。只需删除该条件并尝试使用此
if(index%3==0){
ret.add(System.getProperty("line.separator"));
}
虽然我支持@Peter的评论
I would add them all to a List and only add the formatting when you print. Adding formatting in your data usually leads to confusion.