gpt4 book ai didi

java - 如何使用某些单词分隔可以动态的字符串

转载 作者:行者123 更新时间:2023-11-30 05:30:52 25 4
gpt4 key购买 nike

我试图根据某些键分离某个字符串,并将它们以键值对的形式添加到映射中。按键可以改变位置。我是正则表达式新手,需要一些帮助来完成它。

我有一个字符串“key1=valueforkey1&key2=valueforkey2”。该字符串也可以更改为“key2=valueforkey2&key1=valueforkey1”

我的正则表达式适用于上述情况,并正确分隔键和值。

当值在键之前包含“=”时,它不起作用。

例如

"key1=valueforkey1=&key2=valueforkey2"

"key1=valueforkey1==&key2=valueforkey2".

我的 map 将包含

map("key1", "valueforkey1") 

map("key2", "valueforkey2")

而不是

map("key1", "valueforkey1==") 

map("key2", "valueforkey2")
String delimiter = "[= & ?]+";
String[] split = text.split(delimiter );
for (int i=0; i<split.length; i+=2) {
maps.put(split[i], split[i+1]);
}

我希望分隔字符串并将它们添加到映射中的键值对中。

map("key1", "valueforkey1") or

map("key1", "valueforkey1=") or

map("key1", "valueforkey1==")

map("key2", "valueforkey2") or

map("key2", "valueforkey2=") or

map("key2", "valueforkey2==")

最佳答案

您可以使用

([^=&\s]+)=(.*?)(?=&[^=&\s]+=|$)

请参阅regex demo .

  • ([^=&\\s]+) - 第 1 组:除 =& 和空格之外的任何 1+ 个字符
  • = - = 符号
  • (.*?) - 第 2 组:除换行符之外的任何 0+ 个字符,尽可能少
  • (?=&[^=&\\s]+=|$) - 紧邻当前位置的右侧,必须有 & 后跟1+ 个除 =& 和空格以及 = 或字符串结尾之外的字符。

Java demo :

String str = "key1=valueforkey1==&key2=valueforkey2";
Pattern p = Pattern.compile("([^=&\\s]+)=(.*?)(?=&[^=&\\s]+=|$)");
Matcher m = p.matcher(str);
Map<String, String> res = new HashMap<String, String>();
while (m.find()) {
res.put(m.group(1), m.group(2));
}
System.out.println(res); // => {key1=valueforkey1==, key2=valueforkey2}

关于java - 如何使用某些单词分隔可以动态的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57589897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com