0

我有一个字符串,我无法在必要时找到将其拆分的方法。下面是场景。

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

请帮我解决这个问题

4

3 回答 3

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);
    }
}
于 2013-05-14T12:26:01.303 回答
1

您可以在正则表达式中添加前瞻以进行拆分。

如果您只想拆分为以String<digit>, so String1, String2, String3, String4... 开头的子字符串,而不是String11,String31等(这些有 2 位数字),您可以使用前瞻(连同"&"分隔符)来检查下一个子字符串是否具有该形式:

queryString.split("&(?=String[0-9]=)")

"String[0-9]="则表达式仅匹配形式为 的子字符串String<digit>,后跟一个=符号(没有=它也将匹配子字符串的开头String<digit><digit>,如String31)。对于不同的拆分标准,您可以将此正则表达式替换为更适合您需要的任何内容。

于 2013-05-14T13:37:47.383 回答
0

您可以尝试使用一些正则表达式以您想要的方式对其进行拆分,但我建议您将 & 市场更改为其他内容,或者对以“String3”开头的结果进行分组,然后加入它们。

于 2013-05-14T11:49:40.490 回答