簡體   English   中英

將字符串拆分為鍵和值對

[英]Splitting a string into key & value pair

我正在用'&'分割字符串。 例如:

password=XXXXXXXXX&username=XXXXXXXXXXX

現在如果假設我的密碼包含'&',那么我在這里遇到的問題是密碼在第一次出現'&'時被激活。

例:

password=disney&123&username=XXXXXXXXXXX

所以我的輸出如下:

password=disney 
123 
username=XXXXXXXXXXX

但我希望我的輸出為:

password=disney&123 
username=XXXXXXXXXXX

請指導我,因為我是java的新手。 我想只使用'&'分割字符串,我的密碼可能conatin'&'它取決於用戶。

在此先感謝Ritesh

一個更簡單的解決方案是完全使用URL編碼。 這里只使用分隔符系統,但您也應該使用編碼。

因此,當您構建String時,對值進行編碼,這將替換某些字符,您可以使用complet解決方案或只是將&替換為您選擇的值(但我不會這樣做)。

然后,當您拆分時,String只包含&用於分隔值,解碼值(重新創建原始值)。

這與向WebService發送請求完全相同,因為您使用相同的模式,這似乎更邏輯。

  • 編碼值
  • 使用& Concat值
  • 發送字符串
  • 使用&拆分字符串
  • 解碼值
String[] strs="password=disney&123&username=XXXXXXXXXXX".split("&username=");
strs[1]="username="+strs[1];
System.out.println(strs[0]);
System.out.println(strs[1]);

-

編輯:

//This is a slightly more generalized method
String[] strs="username=XXXXXXXXXXX&password=disney&123".split("&(?=(username|password)=)");
System.out.println(strs[0]);
System.out.println(strs[1]);

-

編輯:

//more generalized method
String[] strs="username=XXXXXXXXXXX&password=disney&123".split("&(?=([a-zA-Z0-9]+)=)");
for(String str : strs)
    System.out.println(str);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM