Java 在每个元音前添加文本

Java 在每个元音前添加文本,java,arrays,string,replace,char,Java,Arrays,String,Replace,Char,您好,我正在尝试在文本中的每个元音(A、E、I、O、U)之前添加字符串OB。我可以假设文本由所有大写字母组成,没有空格或标点符号。这些都是由我能够创建的其他方法处理的 这就是我到目前为止所做的: public static String obify(String s){ String text = s; String[] capVowels = {"A", "E", "I", "O", "U"}; for (String vow : capVowels){

您好,我正在尝试在文本中的每个元音(A、E、I、O、U)之前添加字符串OB。我可以假设文本由所有大写字母组成,没有空格或标点符号。这些都是由我能够创建的其他方法处理的

这就是我到目前为止所做的:

public static String obify(String s){

    String text = s;
    String[] capVowels = {"A", "E", "I", "O", "U"};
    for (String vow : capVowels){
        text = text.replace(vow, "OB" + vow);
    }
    return text;
}
但当我给它一根针时,它会在第一个元音前印上两个OB。 示例输入:HELLOWOLD,输出:hobobellobobold


如有任何帮助,请给出解释。

您可以使用正则表达式通过
String#replaceAll
将所有元音替换为“OB{vowel}”。比如说

final String test = s.replaceAll("[AEIOU]", "OB$0");
$0
表示匹配的字符串,即元音



结果中出现重复的“OB”字符串的原因是for循环。问题是每次迭代都会添加更多的元音,即“OB”中的“O”,因此当您开始“O”迭代时,它会替换您添加的元音。

在循环中执行此操作的问题是每次迭代都会添加更多元音,即“OB”中的“O”谢谢,这非常有效。为什么变量上的“final”?另外,如果不太想问的话,你知道为什么我的代码在第一个元音上重复了OB吗?好的,现在看看,很抱歉很新。@Aztolz我已经在我的答案中添加了额外的信息,所以都在一个地方。