2014-09-05 34 views
-2

我有一个包含下列格式元素的ArrayList:爪哇 - 格式化字符串中的一个ArrayList

1. 11111 "Top Secret Twenty One - Janet Evanovich" $8.99 1 0% $8.99 

什么是格式化ArrayList中的每个元素,使它看起来如下的最佳方式:

11111, "Top Secret Twenty One - Janet Evanovich", 8.99, 1, 0.0, 8.99 

我基本上循环ArrayList并将其放置在输出文件中。我如何在这个循环中格式化它?

BufferedWriter bw = new BufferedWriter(file); 

for(int i = 0; i<items.size(); i++){ 

    bw.append(items.get(i).toString()); 
} 
+1

这是什么逻辑? – Jens 2014-09-05 07:30:08

+1

你想删除'1.'?和所有的特殊符号 – VinayVeluri 2014-09-05 07:30:46

+1

如何从8.99美元你结束了这10.95? – 2014-09-05 07:33:03

回答

0

您应该在列表中使用POJO。如果你必须这样做,我希望这可以帮助你:

 String s1 = "1. 11111 \"Top Secret Twenty One - Janet Evanovich\" $8.99 1 0% $8.99"; 
     String first = s1.substring(3); 
     first = first.substring(0, first.indexOf(" ")); 
     String title = s1.substring(s1.indexOf("\""), s1.lastIndexOf("\"")+1); 
     String rest = s1.substring(s1.lastIndexOf("\"")).replaceAll("\\$", "").replaceAll("%", ""); 
     String result = first+" ,"+title+rest.replaceAll(" ", ", "); 
0

为什么不是正则表达式?

Pattern compile = Pattern.compile("\\d+\\.\\s(\\d+)\\s\\\"(.+)\\\"\\s\\$(\\d+\\.\\d+)\\s(\\d+)\\s(\\d+)%\\s\\$(\\d+\\.\\d+)"); 
    Matcher matcher = compile.matcher("1. 11111 \"Top Secret Twenty One - Janet Evanovich\" $8.99 1 0% $8.99"); 
    if(matcher.find()){ 
     String[] tab = {matcher.group(1), '\"'+matcher.group(2)+'\"', matcher.group(3), matcher.group(4), ""+(Double.parseDouble(matcher.group(5))/100), matcher.group(6)}; 
     System.out.println(String.join(", ",tab)); 
    }