2014-09-05 3 views
-2

У меня есть ArrayList, который содержит элементы в следующем формате:Java - Форматирование строк в качестве 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

+1

Вы хотите удалить '1.'? и все специальные символы – VinayVeluri

+1

как от $ 8.99 вы попали в этот 10.95? –

ответ

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)); 
    }