2

文字列を取得しました:

["4fd1cf1783353a15415","4ffecf87fcc40d110a965626"]

また

["4fd5f684815345","4fd6ef3e60a676854651","4fd83c33c19164512153"]

そして、すべての ID (例: 4fd5f684815345、4fd6ef3e60a676854651、4fd83c33c19164512153...) を独立した文字列 (または ArrayList) に格納したいと思います。

文字列は動的 (1,2,3 値以上) になる可能性があるため、どのように解析するのですか?

または JSON 配列の解析:

私のJSON

"idCards":[
"4fc52f95egvt418541515",
"4fd1d05454151541545115"
],

私のコードの一部:

msg3 = (JSONArray) myobject.get("idCards");
System.out.println(msg3.toJSONString()); 

結果:

[4fc52f95egvt418541515","4fd1d05454151541545115"]

この 2 つの値を 2 つの異なる文字列に入れたいと思います。

助けてくれて本当にありがとうございます!

4

6 に答える 6

4

これはJSON文字列である可能性があります。その場合、Java JSONライブラリを利用して、それをJavaネイティブオブジェクトに解析するのに役立てることができます。

http://www.json.org/

http://code.google.com/p/google-gson/

String data = "[\"4fd5f684815345\",\"4fd6ef3e60a676854651\",\"4fd83c33c19164512153\"]";

// parse JSON String to JSON Array
JsonArray array = (JsonArray) (new JsonParser()).parse(data);

// build a Java ArrayList
List<String> stringList = new ArrayList<String>();

// for each item in JsonArray, add to Java ArrayList
for (int i = 0; i < array.size(); i++) {
    stringList.add((array.get(i)).getAsString());
}
于 2012-07-20T09:44:44.133 に答える
2

私はここでいくつかの仮定をします:

  • [区切り、、の前後にスペースがないと仮定します],
  • ,抽出する文字列にnoと文字があると想定"します

    input.substring(1, input.length() - 1).replaceAll("\\\"", "").split(",");
    

    または、正規表現をいじりたくない場合(関数は正規表現で機能します)、次のメソッドreplaceAllを使用できます。replace

    input.substring(1, input.length() - 1).replace("\"", "").split(",");
    

上記の仮定により、この答えは非常に脆弱です。データが実際にJSONである場合は、JSONパーサーの使用を検討してください。

于 2012-07-20T09:46:58.603 に答える
2

JSONの回答には完全に同意しますが、これが1回限りのハックである場合は、次のようにすることができます:

    String input = "[\"4fd5f684815345\",\"4fd6ef3e60a676854651\",\"4fd83c33c19164512153\"]";
    input = input.replace("[", "");
    input = input.replace("]", "");
    input = input.replace("\"", "");
    String[] parts = input.split(",");
于 2012-07-20T09:50:45.253 に答える
1
    String str = "[\"4fd5f684815345\",\"4fd6ef3e60a676854651\",\"4fd83c33c19164512153\"]";
    String strArry[] = null;

    if(str.trim().length() > 0){
        str = str.substring(1 , str.length()-1).replaceAll("\\\"", "");
        strArry = str.split(",");
    }
于 2012-07-20T09:51:06.127 に答える
0

で分割し、replaceAllの末尾を削除しない方が安全です(' ,'は小数点記号である可能性があるため)。ここでは、subtringはすべての文字列を解析しません。("\",\"")"

final String str = "[\"4fd5f684815345\",\"4fd6ef3e60a676854651\",\"4fd83c33c19164512153\"]";

final String strArray[] = str.substring(2, str.length() - 2).split("\",\"");
final ArrayList<String> al = new ArrayList<String>();

for (final String string : strArray) {
    al.add(string);
    System.out.println(string);
}
System.out.println(al);    

for(final String string:strArray){System.out.println(string); }

出力:

4fd5f684815345
4fd6ef3e60a676854651
4fd83c33c19164512153
[4fd5f684815345, 4fd6ef3e60a676854651, 4fd83c33c19164512153]
于 2012-07-20T10:16:45.660 に答える
0

s が入力文字列の場合、次のように単純にすることができます

String[] idArray = s.replaceAll("[\\[\\]\"]", "").split(",");
于 2012-07-20T10:00:33.750 に答える