您好,我正在尝试在文本中的每个元音 (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;
}
但是当我传递给它一个 sting 时,它会在第一个元音之前打印两个 OB。 示例输入:HELLOWOLD,输出:HOBOBELLOBOWOBOLD
如有任何帮助,请提供解释,我们将不胜感激。
最佳答案
您可以使用正则表达式 character class通过 String#replaceAll
将所有元音替换为 "OB{vowel}"。例如
final String test = s.replaceAll("[AEIOU]", "OB$0");
$0
代表匹配的字符串,即元音。
您在结果中得到重复的“OB”字符串的原因是您的 for 循环。问题是您在每次迭代中添加了更多元音,即“OB”中的“O”,因此当您进行“O”迭代时,它会替换您添加的元音。
关于java - 在每个元音前添加文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51718711/