无法执行String Splitting

时间:2013-05-14 11:45:06

标签: java split

我有一个字符串,我无法在必要时找到解决方法。 以下是情景。

我正在使用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 ......等等。

请帮我解决这个问题

3 个答案:

答案 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>开头的子字符串,那么String1String2String3String4 ...,而不是{ {1}},String11等(这些都有2位数字),您可以使用前瞻(以及String31分隔符)来检查该格式的下一个子字符串:

"&"

queryString.split("&(?=String[0-9]=)") 正则表达式仅匹配"String[0-9]="形式的子字符串,后跟String<digit>符号(没有=它也会匹配=的开头1}} substring,如String<digit><digit>)。对于不同的拆分标准,您可以将此正则表达式替换为更适合您需要的标准。

答案 2 :(得分:0)

您可以尝试使用某些正则表达式按照您希望的方式将其拆分,但我建议您更改&amp;将市场推向市场,或者将以“String3”开头的结果分组,然后加入。