2013-05-14 45 views
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

什么是使'String2 = 2&String3 = 3'可拆分的规则,但不是'String3 = 3&String31 = 31'? – assylias 2013-05-14 11:48:11

+1

@assylias我怀疑这是因为“3x”被认为是“3”的一部分。 – 2013-05-14 11:49:22

+0

这里String3是URL。所以更确切地说,我可以用以下方式替换String3:URL = http:www.someurl.com/request1&request2=somedata&request3=someotherdata/ – user2649233 2013-05-14 12:01:58

回答

0

你可以尝试一些正则表达式来拆分它,你想要的方式,但我会建议你&市场改为别的东西,或一组以“STRING3开始结果“然后加入他们。

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); 
    } 
} 
+0

您好naveen请vist http://stackoverflow.com/questions/16543676/how-to-parse-this-querystring-这这是json响应的结果 – user2649233 2013-05-14 13:06:30

+0

然后我提到的是确切的...;) – NamingException 2013-05-17 10:28:58

1

你可以一个lookahead添加到您的正则表达式的分裂。

如果你只是想分成开始String<digit>子,所以String1String2String3String4 ...,但不String11String31等(这些有2位),你可以使用一个超前(与一起"&"分隔符),检查下一个子是以下形式:

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

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