Webservice到数组,子串适合吗?

时间:2017-06-06 19:41:33

标签: java substring

我目前正在Android Studio中开发Java应用程序。

我面临一个小问题。我有一个来自网络服务的大文件,它已经在一个变量中。最后,我希望每个SKU都有一个数组(总是在一个样式下)。并且数组应该只包含第一个9值。因此,数组1应命名为:sku1[9]

sku1[0]="123456"
sku1[1]="123456"
sku1[2]="123456"
... 

然后我需要另一个数组:sku2[9]

sku2[0]="123456"
sku2[1]="123456"
sku2[2]="123456"
... 

如何从这个大屁股文件中提取所需的字符串并将它们放入一个漂亮的数组?

任何帮助都将不胜感激。

enter image description here

1 个答案:

答案 0 :(得分:0)

由于String已经进入变量,您可以使用Pattern匹配来提取sku字符串,例如:

String s = "<!DOCTYPE> <div>    styles = {\"sku1_1\":\"12\",..}";
Pattern pattern = Pattern.compile("(\"sku[0-9]_[0-9]\":\"[0-9]+\")");
Matcher m = pattern.matcher(s);
while(m.find()){
    System.out.println(m.group(1));
}

默认情况下会忽略_之后有多个数字的字符串。

<强>更新

如果您希望将值存储在array中,则可以声明arraylist,将元素添加到其中并将其转换回array,例如:

String s = "<!DOCTYPE> <div>    styles = {\"sku1_1\":\"12\",..}";
Pattern pattern = Pattern.compile("(\"sku[0-9]_[0-9]+\":\"[0-9]\")");
Matcher m = pattern.matcher(s);
List<String> values = new ArrayList<>();
while(m.find()){
   String[] tokens = m.group(1).split(":");
   values.add(tokens[1]);
}
String[] array = values.toArray(new String[values.size()]);

这样,它会将值放在数组中。如果你想要多个数组,那么你可以检查第一个标记的值(即tokens[0])并初始化新列表,如果它已经从让我们说sku1更改为sku2