Java字符串将'&'替换为& 但不是& 到& amp;

sri*_*asu 13 java regex string replace ampersand

我有一个大字符串,其中我有以下模式中可用的&字符 -

A&B
A & B
A& B
A &B
A&B
A & B
A& B
A &B
Run Code Online (Sandbox Code Playgroud)

我想替换所有出现的&字符到& 替换它时,我还需要确保我不会错误地将其转换&&.我如何以精通业绩的方式做到这一点?我使用正则表达式吗?如果是的话,请你能帮我解决正确的正则表达式吗?

到目前为止,我一直试着追随没有乐趣:

data = data.replace(" & ", "&"); // doesn't replace all &
data = data.replace("&", "&");   // replaces all &, so & becomes &
Run Code Online (Sandbox Code Playgroud)

kha*_*son 40

您可以使用具有负前瞻的正则表达式.

正则表达式字符串将是&(?!amp;).

使用replaceAll,你会得到:

A&B
A & B
A& B
A &B
A&B
A & B
A& B
A &B
Run Code Online (Sandbox Code Playgroud)

所以单个字符串的代码str是:

str.replaceAll("&(?!amp;)", "&");
Run Code Online (Sandbox Code Playgroud)


gle*_*eba 7

你可以试试这个,它应该可以工作:

data = data.replaceAll("&","&").replaceAll("&","&");
Run Code Online (Sandbox Code Playgroud)

这样,您首先将所有内容替换为&&因此您将拥有的只是&,然后,您将所有内容替换为&