【问题标题】: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 &

【问题讨论】:

  • 您可以将所有& 更改为&,然后将所有& 更改为&
  • 你是否有其他转义字符,例如 

标签: java regex string replace ampersand


【解决方案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("&","&");

这样,您首先将所有& 替换为&,因此您将拥有&,然后将它们全部替换为&

【讨论】:

    猜你喜欢
    • 2011-08-07
    • 2012-04-12
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 2011-10-19
    • 1970-01-01
    • 2018-09-06
    相关资源
    最近更新 更多