我想知道我的字符串是否=& &安培;顺序在里面。如果是,那么我想编码第二个&amp ;.如何使用java正则表达式找到它?
我的字符串是这样的:
α=猫和b =狗&安培;猫和C =猴
由于 切塔尼亚
答案 0 :(得分:3)
就像Mosty和Ted所说的那样,或许最好的方法就是检测并逃避'&'。
但是,如果你想让一个正则表达式为你完成这项工作,那么它就是:
String s = "a=cat&b=dog&cat&c=monkey";
s = s.replaceAll("&(?=[^=]*&)", "&");
System.out.println(s);
答案 1 :(得分:2)
为什么你不只是split呢?
首先将其拆分为“&”,然后取出第二个元素
答案 2 :(得分:0)
您可以使用以下格式:
if (string.contains("=&&"))
{
// do something
}
else
{
// do something else
}
我不知道你的意思是“编码&”虽然。你能澄清一下吗?
答案 3 :(得分:0)
在形成连接的名称 - 值对字符串之前,更容易在值中转义&
。但鉴于已经编码的字符串,我认为Mosty建议的变体可能效果最好:
String escapeAmpersands(String nvp) {
StringBuilder sb = new StringBuilder();
String[] pairs = nvp.split("&");
if (pairs[0].indexOf('=') < 0) {
// Maybe do something smarter with "a&b=cat&c=dog"?
throw new Exception("Can't handle names with '&'");
}
sb.append(pairs[0]);
for (int i = 1; i < pairs.length; ++i) {
String pair = pairs[i];
sb.append(pair.indexOf('=') < 0 ? "&" : "&");
sb.append(pair);
}
return sb.toString();
}
这可能比常规尝试使用正则表达式更快。</ p>