Java 字符串 将“&”替换为 &但不是和至和

2022-09-02 11:26:45

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

A&B
A & B
A& B
A &B
A&B
A & B
A& B
A &B

我想将所有出现的 & 字符替换到 替换此字符时,我还需要确保我不会错误地将 an 转换为 。我如何以精通性能的方式做到这一点?我使用正则表达式吗?如果是,请你能帮我拿起正确的正则表达式来做上述事情吗?&&&

到目前为止,我一直尝试遵循,没有喜悦:

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;)", "&");

答案 2

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

data = data.replaceAll("&","&").replaceAll("&","&");

这样,您首先将全部替换为,因此您将拥有的只是 ,然后,您将所有这些替换为 。&&&&