0

1つの文字列を次のように解析する際に問題があります

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|^|$";

ここで文字列には、「~~」で区切られた2つのメインレコードがあります。1.5番目のstdと2.7番目のstdを想定してください。次に、2 番目のレコード (つまり 7 番目の std) には、"~" で区切られた 6 つのレコードがあります。ここで、この応答を解析し、個々のレコードの値を保存したいと思います。

2 番目のレコードから 1 つのレコードを取得します。

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

要するに、私が欲しいのは-私が知りたいのは-「Sandeep Deshmukh」は7th Std. 1.0 は彼の学年、10.0 は彼の 2 年生 ......そして JPPWR は彼の都市の短い名前です。

次に、それが 2 番目のメイン レコード (つまり 7 番目の std) からのものであることを認識し、このレコードのすべての値を "|^" で区切って保存する必要があります。これを行う方法。次のコードを試しました。

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

どんな助けでも感謝されます。前もって感謝します

4

1 に答える 1

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]);
        }
于 2013-10-09T09:03:23.380 に答える