【问题标题】:Add text before every vowel在每个元音之前添加文本
【发布时间】:2019-01-14 01:37:14
【问题描述】:

您好,我正在尝试在文本中的每个元音 (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,输出:HOBOBELLOBOWOBOLD

如有任何帮助,我们将不胜感激。

【问题讨论】:

  • 在循环中这样做的问题是每次迭代都会添加更多元音,即“OB”中的“O”

标签: java arrays string replace char


【解决方案1】:

您可以使用正则表达式 character class 通过String#replaceAll 将所有元音替换为 "OB{vowel}"。例如

final String test = s.replaceAll("[AEIOU]", "OB$0");

$0代表匹配的字符串,即元音。


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

【讨论】:

  • 谢谢你,这很好用而且效率很高。为什么是变量上的“final”?另外,如果问得不算多,你知道为什么我的代码在第一个元音上重复了 OB 吗?
  • 好的,现在看到,抱歉,很新。
  • @Aztolz 我已将额外信息添加到我的答案中,所以它们都在一个地方。
猜你喜欢
  • 1970-01-01
  • 2021-05-07
  • 1970-01-01
  • 1970-01-01
  • 2012-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-22
相关资源
最近更新 更多