2014-01-27 5 views
0

У меня есть строка, которую я хочу разбить из Stringbuffer и сохранить в arraylist объекта.Сплит String и сохранить в список объектов

У меня есть строка данных, которая выглядит примерно так:

001>10102011>874837>Y>Y>TEST001>No\\002>11102011>8743834>Y>Y>null>No\\ 

Команда \ будет представлять для сохранения на новый объект. Как сохранить эту строку в List listsaveobj?

Мой образец сохранения объекта

public class SaveObject{ 
    private String obj1; 
    private String obj2; 
    private String obj3; 
    private String obj4; 
    private String obj5; 
    private String obj6; 
    private String obj7; 

    //getters and setters 
} 

Я застрял с

StringTokenizer st= new StringTokenizer(sb1.toString(),"\\\\"); 
     int count = 0; 
     int total= st.countTokens();//count no of rows of data 
     System.out.println(total); 

     while(count<total){ 
      while(st.hasMoreElements()){ 
       tmpList.add(st.nextToken()); 
       count++; 
      } 
     } 

       System.out.println(tmpList.size()); 

     for(int j = 0; j<tmpList.size(); j++){ 
      String str = tmpList.get(j); 

      StringTokenizer st2 = new StringTokenizer(str, ">"); 
      while (st2.hasMoreElements()){ 

       System.out.println(st2.nextToken()); 
          // is it possible to save into ArrayList of objects here? 
          // I can see that the String can split into 
          // 001 
          // 10102011 
          // 874873 
          // Y 
          // Y 
          // TEST001 
          // No etc 
          /* using st.nextToken but I don't know how to continue from here. Pls help!! Thanks. I want to do something like 
          obj = new Object(); 
          obj.saveObj1(...); 
          obj.saveObj2(...); 
          obj.saveObj3(...); 
          obj.saveObj4(...); 
          obj.saveObj5(...); 
          obj.saveObj6(...); 
          obj.saveObj7(...); 
          listsaveobj.add(obj); but it's not possible? */ 
        } 
     } 
+0

Считаете ли вы заменить эти семь полей с массивом? –

+0

привет Дэвиду, да, определенно :) –

+0

Что вы раскалываете? – Prince

ответ

1

Вот лучший способ извлечь данные:

String s = "001>10102011>874837>Y>Y>TEST001>No\\\\002>11102011>8743834>Y>Y>null>No\\\\"; 
String[] rows = s.split("\\\\"); 
for (String r : rows) { 
    String[] cols = r.split(">"); 
    for (String c : cols) { 
     System.out.print(c + "\t"); 
    } 
    System.out.println(); 
} 
+0

Не должно быть 's.split (" \\\\\\\\ ")' на второй строке? –

+0

Умм, не позволяйте? в конце моего комментария обмануть вас. Я тебя не спрашивал. 'split' принимает регулярное выражение в качестве аргумента. Регулярное выражение для совпадения с обратной косой чертой - это два обратных слэша вместе, но вам нужно четыре, чтобы записать их в свой код. Поскольку OP использует пару обратных косых черт как разделитель, вам нужно восемь, чтобы написать его. –

+0

Привет, Дэвид, что ты имеешь в виду? Я использую «\\» как индикатор для нового объекта. –

Смежные вопросы