arraylist的元素作为文件行中的替换

时间:2013-09-17 20:27:44

标签: java parsing replace java.util.scanner

我有这部分代码读取文件linebyline。即将编辑的原始行是: j(ac)“test”/ Aaa,Bbb /

我有一个元素[Ccc,Ddd,Eee]的arraylist,我想要在/和/之间的行中替换这些元素。 /和/之间的重复工作正常。但是我不能把arraylist直接放到.replace因为[]也会出现。所以我试着添加列表的元素。但是我无法得到所需的结果:j(ac)“test”/ Ccc,Ddd,Eee /

我一直只得到第一个元素:j(ac)“test”/ Ccc /

我该如何解决这个问题?

List<String> strlist = new ArrayList<String>() ;

Scanner scanner = new Scanner(file);

 while (scanner.hasNextLine()) {
               String line = scanner.nextLine();

               if (line.contains("j(ac)")) {   

                   String skat ;
                   skat = null ;

                   for(String s : strlist) {
                   for (int index = 0; index < strlist.size(); index++) {

                               s = strlist.get(index);
                       skat=s;
                   }
                   }
                  String next = line.replaceAll("/.*?/", "/"+skat+"/");

                   System.out.print(next);


               }

2 个答案:

答案 0 :(得分:2)

你非常接近。

你只需要改变,

skat=s;skat = skat + "," + s;

通过这种方式,您可以附加到列表中,添加逗号,并且不会在每次迭代时重置skat。

答案 1 :(得分:0)

你有skat = s,它需要skat + = s所以它附加到skat而不是每次迭代循环时用新字符串替换它