我有一个字符串,我无法在必要时找到解决方法。 以下是情景。
我正在使用java
String queryString = "String1=1&String2=2&String3=3&String31=31&String32=32....&String4=4";
我想要输出类似下面的
String1=1
String2=2
String3=3&String31=31&String32=32....
String4=4
我尝试了queryString.split("&");
,但它分裂了String3,Strin31,String32 ......等等。
请帮我解决这个问题
答案 0 :(得分:1)
如果你接受以另一种方式这样做,这就是它的代码....
但我觉得这根本不值得推荐......
我只想让你了解JSON ...是否不适合你的要求。
我的代码在这里:
public static void main(String[] args) {
String queryString = "String1=1&String2=2&String3=3&String31=31&String32=32&String4=4";
int count = 1;
String queryParam = "";
try{
while(count == 1 || queryParam.length() > 0){
queryParam = queryString.substring(queryString.indexOf("String" + count + "="),queryString.indexOf("String" + ++count + "=")-1);
System.out.println(queryParam);
}
}catch(Exception e){
queryParam = queryString.substring(queryString.indexOf("String" + --count + "="));
System.out.println(queryParam);
}
}
答案 1 :(得分:1)
您可以在正则表达式中添加lookahead以进行拆分。
如果您只想拆分为以String<digit>
开头的子字符串,那么String1
,String2
,String3
,String4
...,而不是{ {1}},String11
等(这些都有2位数字),您可以使用前瞻(以及String31
分隔符)来检查该格式的下一个子字符串:
"&"
queryString.split("&(?=String[0-9]=)")
正则表达式仅匹配"String[0-9]="
形式的子字符串,后跟String<digit>
符号(没有=
它也会匹配=
的开头1}} substring,如String<digit><digit>
)。对于不同的拆分标准,您可以将此正则表达式替换为更适合您需要的标准。
答案 2 :(得分:0)
您可以尝试使用某些正则表达式按照您希望的方式将其拆分,但我建议您更改&amp;将市场推向市场,或者将以“String3”开头的结果分组,然后加入。