Java String 将 '&' 替换为 & 而不是 & 到 &
Posted
技术标签:
【中文标题】Java String 将 \'&\' 替换为 & 而不是 & 到 &【英文标题】:Java String Replace '&' with & but not & to &Java String 将 '&' 替换为 & 而不是 & 到 & 【发布时间】:2014-10-22 23:55:01 【问题描述】:我有一个大字符串,其中 & 字符可用于以下模式 -
A&B
A & B
A& B
A &B
A&B
A & B
A& B
A &B
我想将所有出现的 & 字符替换为 &
在替换它时,我还需要确保我不会错误地将&
转换为&
。我如何以精通性能的方式做到这一点?我使用正则表达式吗?如果是,请您帮我挑选正确的正则表达式来执行上述操作吗?
到目前为止,我一直没有高兴地尝试过:
data = data.replace(" & ", "&"); // doesn't replace all &
data = data.replace("&", "&"); // replaces all &, so & becomes &
【问题讨论】:
您可以将所有&
更改为&
,然后将所有&
更改为&
。
你是否有其他转义字符,例如 
?
【参考方案1】:
您可以使用带有负前瞻的正则表达式。
正则表达式字符串为&(?!amp;)
。
使用replaceAll
,你会得到:
A&B
A & B
A& B
A &B
A&B
A & B
A& B
A &B
所以单个字符串str
的代码将是:
str.replaceAll("&(?!amp;)", "&");
【讨论】:
例如,您可以使用&(?![a-z]1,6;)
,这样•
就不会变成•
。【参考方案2】:
你可以试试这个,应该可以的:
data = data.replaceAll("&","&").replaceAll("&","&");
这样,您首先将所有&
替换为&
,因此您将拥有&
,然后将它们全部替换为&
。
【讨论】:
以上是关于Java String 将 '&' 替换为 & 而不是 & 到 &的主要内容,如果未能解决你的问题,请参考以下文章
JAVA基础 String包装类下 .replace方法的使用以及char和字符序列的使用场景