Java – how do I replace multiple strings in one line?

I want to insert "ob" before each vowel I tried the following code:

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

When I use the above code, it replaces a with oba, but when I replace o with Obo, it replaces o in the original text and O in oba. For example, for "I won't" I want to output "Obi wobon't", but it gives "Obi wobon't", because o in Obi from the first line is regarded as a vowel

I need a solution that won't replace the new o

Solution

Because replaceall uses regular expressions, you can use references to capture elements in the replacement string:

out=out.replaceAll("[AEIoUY]","OB$0");

>[aeiouy] capture a single character from the aeiouy list > replace $0 in the string represents the captured character

This is a demo

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>