2013-05-14 60 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)。對於不同的分割標準,您可以將這個正則表達式替換爲更適合您的需求的任何內容。