将字符串拆分为键和&价值对

时间:2017-02-13 06:34:21

标签: java

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

password=XXXXXXXXX&username=XXXXXXXXXXX

现在假设我的密码包含'&'然后我在这里遇到问题,密码在第一次'&'时出现。

示例:

password=disney&123&username=XXXXXXXXXXX

所以我的输出如下:

password=disney 
123 
username=XXXXXXXXXXX

但我希望我的输出为:

password=disney&123 
username=XXXXXXXXXXX

请指导我,因为我是java的新手。 我想用'&'分割字符串只有和我的密码可以conatin'&'这取决于用户。

先谢谢, 仅限Ritesh

2 个答案:

答案 0 :(得分:2)

更简单的解决方案是完全使用URL编码。在这里,您只使用分隔符系统,但您也应该使用编码。

因此,当您构建String时,对值进行编码,这将替换某些字符,您可以使用complet solution或只是将&替换为您选择的值(但我不会这样做)这一点)。

然后,当你拆分时,String只包含用于分隔值的&,解码值(重新创建原始值)。

这与向WebService发送请求完全相同,因为您使用相同的模式,这似乎更具逻辑性。

  • 对值进行编码
  • 使用&
  • 保存值
  • 发送字符串
  • 使用&
  • 拆分字符串
  • 解码值

答案 1 :(得分:1)

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);