如何使用Java中的分隔符解析字符串

时间:2016-10-12 12:55:19

标签: java arrays

当我尝试解析以下字符串时我只得到第一个数组,我无法得到第二个和第三个部分。这是我从API收到的回复,我无法更改。

这是字符串

[3451605#John#600#Doe],[3503101#Jane#100#Doe]

这是我的代码

 String String1= response.replace("[", "");
                        String String2= String1.replace("]", ""); 
                           String[] ss=String1.split("#");
                           for(int i=0;i<ss.length;i++)
                             {
                               System.out.println(ss[i]);
                               resp1= ss[0];                                
                               resp2= ss[1];
                               resp3= ss[2];
                               resp4= ss[3];                


                             } 

这是我打印出回复时得到的回复。

3451605
John
600
Doe,3503101
Jane
100
Doe

3 个答案:

答案 0 :(得分:3)

您可能希望通过拆分反序列化响应,如下所示:

  • 首先由,分隔您的对象
  • 然后清理[]并按#
  • 拆分

示例

// test response
String response = "[3451605#John#600#Doe],[3503101#Jane#100#Doe]";
// itemizing "objects"
String[] items = response.split(",");
// iterating "objects"
for (String item: items) {
    // cleaning square brackets and splitting by "#"
    String[] properties = item.replaceAll("\\[|\\]", "").split("#");
    // printing each object's properties
    System.out.println(Arrays.toString(properties));
}

<强>输出

[3451605, John, 600, Doe]
[3503101, Jane, 100, Doe]

答案 1 :(得分:0)

你正在拆分string1而不是string2

       String String1= response.replace("[", "");
     String String2= String1.replace("]", ""); 
        String[] ss=String2.split("#");

答案 2 :(得分:0)

我想你想要一个像这样的输出:

3451605
John
600
Doe
3503101
Jane
100
Doe

所以你必须分成#,

       String[] ss=String2.split("[#,]");