Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法按我想要的方式拆分字符串_Java_Android_Regex - Fatal编程技术网

Java 无法按我想要的方式拆分字符串

Java 无法按我想要的方式拆分字符串,java,android,regex,Java,Android,Regex,在我的Java应用程序中,我有一个很长的JSON字符串,其中包含我想要提取的数据 [["19:05",2,"","19.3","26.7","74","1003.6","3.2","236.0","00 : 05 : 43","01 : 54 : 17","","","",null,"rain"],{"1":["2",3,"0","","","","","0","","4713","M",1],"2":["3",3,"0","","","","","0","","4714","M",1],"3"

在我的Java应用程序中,我有一个很长的JSON字符串,其中包含我想要提取的数据

[["19:05",2,"","19.3","26.7","74","1003.6","3.2","236.0","00 : 05 : 43","01 : 54 : 17","","","",null,"rain"],{"1":["2",3,"0","","","","","0","","4713","M",1],"2":["3",3,"0","","","","","0","","4714","M",1],"3":["3681",3,"0","","","","","0","","4715","M",1],"4":["28",4,"0","","","","","0","","4716","M",1],"5":["7",4,"0","","","","","1","","4717","M",1],"6":["13",3,"0","","","","","0","","4718","M",1],"7":["35",4,"0","","","","","0","","4719","M",0],"8":["82",4,"0","","","","","0","","4720","M",1],"9":["44",4,"0","","","","","0","","4721","D",1],"10":["193",4,"0","","","","","0","","4722","D",1],"11":["3347",3,"0","","","","","0","","4723","D",1],"12":["144",4,"0","","","","","0","","4724","D",1],"13":["90",4,"0","","","","","0","","4726","D",0],"14":["89",4,"0","","","","","1","","4727","D",1],"15":["3582",2,"1","","","","5:36.746","0","","4728","D",1],"16":["64",4,"0","","","","","0","","4729","M",0],"17":["78",4,"0","","","","","0","","4730","D",0],"18":["3577",4,"0","","","","","0","","4731","D",1],"19":["38",3,"0","","","","","0","","4732","M",0],"20":["3686",3,"0","","","","","0","","4733","D",0],"21":["1351",4,"0","","","","","0","","4772","D",0],"22":["3689",4,"0","","","","","0","","4734","D",0],"23":["104",4,"0","","","","","0","","4735","D",1],"24":["3693",4,"0","","","","","0","","4736","D",1],"25":["249",4,"0","","","","","0","","4769","D",0],"26":["16",4,"0","","","","","0","","4738","D",1],"27":["171",4,"0","","","","","0","","4739","D",0],"28":["3670",4,"0","","","","","0","","4740","M",0],"29":["3588",4,"0","","","","","0","","4741","D",0],"30":["77",4,"0","","","","","0","","4742","M",1],"31":["151",4,"0","","","","","0","","4755","M",1],"32":["53",4,"0","","","","","0","","4743","M",1],"33":["267",4,"0","","","","","0","","4751","M",0],"34":["3671",4,"0","","","","","0","","4756","M",1],"35":["155",4,"0","","","","","0","","4757","M",1],"36":["153",4,"0","","","","","0","","4758","M",1],"37":["3672",4,"0","","","","","0","","4759","M",1],"38":["3328",4,"0","","","","","0","","4744","D",0],"39":["130",4,"0","","","","","0","","4760","M",1],"40":["3677",4,"0","","","","","0","","4761","M",1],"41":["97",4,"0","","","","","0","","4745","M",1],"42":["101",4,"0","","","","","0","","4746","M",0],"43":["102",3,"0","","","","","0","","4747","M",0],"44":["40",3,"0","","","","","0","","4819","M",0],"45":["129",4,"0","","","","","0","","4762","M",1],"46":["2777",4,"0","","","","","0","","4763","M",0],"47":["3352",4,"0","","","","","0","","4764","M",1],"48":["169",4,"0","","","","","0","","4765","M",1],"49":["120",4,"0","","","","","0","","4748","M",1],"50":["137",3,"0","","","","","0","","4749","M",1],"51":["3678",4,"0","","","","","0","","4750","M",0],"52":["87",3,"0","","","","","0","","4766","M",1],"53":["299",3,"0","","","","","0","","4767","M",1],"54":["19",3,"0","","","","","0","","4752","M",1],"55":["333",4,"0","","","","","1","","4753","M",1],"56":["81",3,"0","","","","","0","","4754","M",1]}]
我想提取的是字符串的对象部分(括号之间),在这种形式下,
“56”:[“81”,3,“0”,“0”,“0”,“0”,“4754”,“M”,“1]
,并从中获取所有这些数据:
“81”,3,“0”,“0”,“0”,“4754”,“M”,“1”,并能够访问它们的号码

为此,我尝试了以下方法:

for(int i = 1; i > 0; i++) {
    String d;
    try {
        d = data.split("\"" + i + "\"\\:\\[")[1];
        d = d.split("\\]")[0];
    } catch(Exception e) {
        e.printStackTrace();
        System.out.println("quit");
        break;
    }
}

问题是我得到了一个数组越界异常,一个insta从这个
数据中退出。split(“\”+I+“\”\“\ \ \ \ \:\ \[”[1]
。我猜我把正则表达式搞砸了,但我真的不知道在哪里。谢谢你的帮助。

JSON数据应该用一个,而不是正则表达式或任何其他类型的低级字符串处理代码来提取。

JSON数据应该用一个,而不是正则表达式或任何其他类型的低级字符串处理代码来提取。

你永远不会退出FOR语句,因为它没有上限

对于(int i=1;i>0;i++)

只要“i>0”,FOR语句将继续运行,并且您将i从1开始,并不断递增,因此它永远不会小于或等于零

如果可以使用array.length或其他方法获取数组大小,并将FOR语句更改为:

对于(int i=1;i>array.length;i++)


这可能会解决问题。

看起来您永远不会退出FOR语句,因为它缺少上限

对于(int i=1;i>0;i++)

只要“i>0”,FOR语句将继续运行,并且您将i从1开始,并不断递增,因此它永远不会小于或等于零

如果可以使用array.length或其他方法获取数组大小,并将FOR语句更改为:

对于(int i=1;i>array.length;i++)


这可能会解决问题。

最好使用JSON Java库。它会为您简化解析过程。下面是一个示例,说明如何提取所需的最后一个数组并将其所有值打印到控制台

final JSONArray root = new JSONArray(YOUR_JSON_STRING);

final JSONObject numData = root.getJSONObject(1);
final JSONArray numArray = numData.getJSONArray("56");

for (int i = 0; i < numArray.length(); ++i) {
  if (i == 1 || i == 11)
      System.out.print(numArray.getInt(i)+",");
  else
      System.out.print(numArray.getString(i)+",");
}
// prints: "81",3,"0","","","","","0","","4754","M",1,
final JSONArray root=新的JSONArray(您的_JSON_字符串);
最终JSONObject numData=root.getJSONObject(1);
final JSONArray numArray=numData.getJSONArray(“56”);
对于(int i=0;i
参考

最好使用JSON Java库。它将为您简化解析过程。下面是一个示例,说明如何提取所需的最后一个数组并将其所有值打印到控制台

final JSONArray root = new JSONArray(YOUR_JSON_STRING);

final JSONObject numData = root.getJSONObject(1);
final JSONArray numArray = numData.getJSONArray("56");

for (int i = 0; i < numArray.length(); ++i) {
  if (i == 1 || i == 11)
      System.out.print(numArray.getInt(i)+",");
  else
      System.out.print(numArray.getString(i)+",");
}
// prints: "81",3,"0","","","","","0","","4754","M",1,
final JSONArray root=新的JSONArray(您的_JSON_字符串);
最终JSONObject numData=root.getJSONObject(1);
final JSONArray numArray=numData.getJSONArray(“56”);
对于(int i=0;i
参考

看起来他也从来没有退出过FOR循环,这可能会导致OOB异常。是的,你诊断OP的实际问题时得到+1。看起来他也从来没有退出过FOR循环,这可能会导致OOB异常。是的,你诊断OP的实际问题时得到+1。谢谢老兄。帮了我很多忙。谢谢老兄。帮助了我经常出去。