У меня есть некоторые проблемы в разборе одной строки какразбор строки в 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;
}
}
Любая помощь будет оказана. Заранее спасибо
Этот вопрос непонятен. Пожалуйста, добавьте то, что вы хотели бы достичь, и что такое pproblem с вашим кодом. И ** нет, «это не работает» - это не то, что мы хотели бы видеть ... ** – ppeterka
Вы не разбираете его! Если вы хотите проанализировать его, пожалуйста, сделайте свою работу с функцией не так, так или иначе, вы можете прочитать некоторый класс и глубокое понимание инкапсуляции. –