2013-10-09 2 views
0

У меня есть некоторые проблемы в разборе одной строки какразбор строки в Java

String str="0|$5th std~~Pramod Deore|^97.0|^970.0|^1.02|^871.0600000000001|^S|^98.94|^5996.9400000000005|^12|^166|^|$7th std~~Vishal Chaudhary|^20.0|^220.0|^111.0|^-2000.0|^|^2220.0|^0.0|^110|^22222~Yogesh Gadage|^100.0|^3000.0|^10.0|^2000.0|^|^1000.0|^0.0|^16|^03~12|^111.0|^134532.0|^11.0|^133311.0|^B|^1221.0|^0.0|^45|^12~Chetan Patil|^200000.22|^2066002.2726|^-0.1500000549999395|^2096002.3166|^H|^-30000.044|^0.0|^20|^FEF-D~Sandeep Deshmukh|^-1.0|^-10.0|^0.0|^0.0|^|^0.0|^123.0|^29|^JPPWR~Yogita Gade|^25.0|^250.0|^100.25|^-2256.25|^X|^2506.25|^0.0|^30|^302|^|$"; 

Здесь в String, у меня есть 2 основных записи разделенных «~~» supppose 1. 5 стандом и 2. 7 станда. Затем во второй записи (т. Е. 7-й std) есть 6 записей, разделенных символом «~». Теперь я хочу проанализировать этот ответ и сохранить значения каждой отдельной записи.

позвольте взять одну запись со второго.

Sandeep Deshmukh|^-1.0|^-10.0|^0.0|^0.0|^|^0.0|^123.0|^29|^JPPWR 

Короче, что я хочу, я хочу IS-знать, сказать - «SANDEEP Дешмук» от 7 Std. и 1,0 - его класс, 10,0 - его 2-й класс ...... и JPPWR - его городское короткое имя

Тогда я должен знать, что это вторая запись (т. е. 7-й этаж), а также хранят все значения эта запись, разделенная «| ^». Как это сделать. Я пробовал следующий код.

import java.util.ArrayList; 

class ParseTest 
{ 
String str="0|$5th std~~Pramod Deore|^97.0|^970.0|^1.02|^871.0600000000001|^S|^98.94|^5996.9400000000005|^12|^166|^|$7th std~~Vishal Chaudhary|^20.0|^220.0|^111.0|^-2000.0|^|^2220.0|^0.0|^110|^22222~Yogesh Gadage|^100.0|^3000.0|^10.0|^2000.0|^|^1000.0|^0.0|^16|^03~12|^111.0|^134532.0|^11.0|^133311.0|^B|^1221.0|^0.0|^45|^12~Chetan Patil|^200000.22|^2066002.2726|^-0.1500000549999395|^2096002.3166|^H|^-30000.044|^0.0|^20|^FEF-D~Sandeep Deshmukh|^-1.0|^-10.0|^0.0|^0.0|^|^0.0|^123.0|^29|^JPPWR~Yogita Gade|^25.0|^250.0|^100.25|^-2256.25|^X|^2506.25|^0.0|^30|^302|^|$"; 

public static void main(String[] args) 
{ 
    ParseTest pt = new ParseTest(); 
    pt.parse(); 
} 

public void parse() 
{ 

    System.out.println (str); 

    ArrayList<String> stockrows = parseResponse(str,"|$"); 
       for (int i=1;i<stockrows.size();i++) 
       { 
        System.out.println("iiii"+i+":::"+stockrows.get(i)); 

        //parse with ~~ 

        ArrayList<String> stockrows1 = parseResponse(str,"~~"); 

        for (int j=0;j<stockrows1.size();j++) 
        { 
         System.out.println("jjjj"+j+"::::"+stockrows1.get(j)); 

         //parse with ~ 
         ArrayList<String> stockrows2 = parseResponse(str,"~"); 

         for (int k=0;k<stockrows2.size();k++) 
         { 
          System.out.println("kkkkkk"+k+"::::"+stockrows2.get(k)); 
         } 
        } 


       } 
} 


public static ArrayList<String> parseResponse(String input, String delimeter) { 
    ArrayList<String> parsed_strings = new ArrayList<String>(); 
    while (true) { 
     int i = input.indexOf(delimeter); 
     if (i >= 0) { 
      String s = input.substring(0, i); 
      parsed_strings.add(s.trim()); 
      input = input.substring(i + delimeter.length(), input.length()); 
     } else { 
      break; 
     } 
    } 
    if (parsed_strings.size() < 1) { 
     parsed_strings.add(input); 
    } 
    return parsed_strings; 
} 
} 

Любая помощь будет оказана. Заранее спасибо

+0

Этот вопрос непонятен. Пожалуйста, добавьте то, что вы хотели бы достичь, и что такое pproblem с вашим кодом. И ** нет, «это не работает» - это не то, что мы хотели бы видеть ... ** – ppeterka

+0

Вы не разбираете его! Если вы хотите проанализировать его, пожалуйста, сделайте свою работу с функцией не так, так или иначе, вы можете прочитать некоторый класс и глубокое понимание инкапсуляции. –

ответ

0
 String str="0|$5th std~~Pramod Deore|^97.0|^970.0|^1.02|^871.0600000000001|^S|^98.94|^5996.9400000000005|^12|^166|^|$7th std~~Vishal Chaudhary|^20.0|^220.0|^111.0|^-2000.0|^|^2220.0|^0.0|^110|^22222~Yogesh Gadage|^100.0|^3000.0|^10.0|^2000.0|^|^1000.0|^0.0|^16|^03~12|^111.0|^134532.0|^11.0|^133311.0|^B|^1221.0|^0.0|^45|^12~Chetan Patil|^200000.22|^2066002.2726|^-0.1500000549999395|^2096002.3166|^H|^-30000.044|^0.0|^20|^FEF-D~Sandeep Deshmukh|^-1.0|^-10.0|^0.0|^0.0|^|^0.0|^123.0|^29|^JPPWR~Yogita Gade|^25.0|^250.0|^100.25|^-2256.25|^X|^2506.25|^0.0|^30|^302|^|$"; 

     String a[] = str.split("~~|~"); 
     for (int i = 0; i < a.length; i++) { 
      System.out.println(a[i]); 
     } 
+0

Спасибо за ответ. Но я также хочу знать, что это std этих конкретных записей. то есть в 5-ом томе только Pramod Deore, в 7-м std есть 5 записей, таких как Vishal Chaudhary, Yogesh Gadage, Chetan Patil ... и Yogita Gade – PPD

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