如何在一行中替换多个字符串?

You*_*mal 3 java regex replaceall

我想在每个元音之前插入"OB".我试过下面的代码:

String out=txt.toUpperCase();

out=out.replaceAll("A","OBA");
out=out.replaceAll("E","OBE");
out=out.replaceAll("I","OBI");
out=out.replaceAll("O","OBO");
out=out.replaceAll("U","OBU");
out=out.replaceAll("Y","OBY");
Run Code Online (Sandbox Code Playgroud)

当我使用上面的代码时,它将替换AOBA,但是当它替换OOBO它时,将替换O原始文本和Oin OBA.例如,因为"I WON'T"我想要输出"OBI WOBON'T",但是它给出"OBOBI WOBON'T"O来自OBI第一行的from 被视为元音.

我需要一个解决方案,它不会取代O加密中的新内容.

das*_*ght 7

由于replaceAll使用正则表达式,您可以在替换字符串中使用对捕获元素的引用:

out=out.replaceAll("[AEIOUY]", "OB$0");
Run Code Online (Sandbox Code Playgroud)
  • [AEIOUY]AEIOUY列表中捕获单个字符
  • $0 在替换字符串中代表已捕获的字符.

这是一个演示.