当前位置: 首页 > 知识库问答 >
问题:

用 String.join() 和 split() 方法替换字符串中的所有元音

湛安宁
2023-03-14

我需要将给定字符串中的每个元音替换为同一个元音,后跟字母“v”,再跟上一次元音。例如:<code>bad</code>应该变为<code>bavad</code>,<code>egg</code>变为<code>evegg</code>,<code>doge</code>dovogeve</code>,等等。练习明确指出需要使用<code>String完成。join()方法。到目前为止,我已经想出了这个。

String string = "bad";
int length = string.length();
for (int i = 0; i < length; i++) {
    char c = string.charAt(i);
    if (isVowel(c)) {
        string = String.join(c + "v" + c, string.split("" + c));
        length += 2;
        i += 2;
    }
}
System.out.println(string);

下面的isVowel方法是检查给定字符是否为元音的简单方法

public static boolean isVowel(char c) {
    return Arrays.asList('a', 'u', 'o', 'e', 'i').contains(c);
}

此解决方案适用于悲伤步数等字符串。但是,如果我尝试使用 aeiou,输出是 avaeveiviovo 而不是 avaeveiviovouvu

共有3个答案

西门旻
2023-03-14

正如其他人在评论中提到的,除了您注意到的问题外,您的代码还有许多其他问题和边缘情况。但我只会回答你最初的问题u未连接,因为String的方式。split()行为(强调我的):

围绕给定正则表达式的匹配项拆分此字符串。

此方法的工作原理就像使用给定表达式和限制参数为零调用双参数拆分方法一样。因此,结果数组中不包括尾随空字符串

因此,当a拆分为[“”,“eiou”]时,u变成[avaevevivoo]

濮泳
2023-03-14

您可以使用字符串来存储结果

String string = "aeiou";
int length = string.length();
String result = "";

for (int i=0; i<length; i++) {
    char c = string.charAt(i);

    if(isVowel(c)) 
       result += String.join(result, c+"v"+c);
    else
       result += c;
}

System.out.println(result);   //Output "avaeveiviovouvu"
丰赞
2023-03-14

这是一种方法。

String[] data = {"bad", "happy", "computer", "java", "vacuum"};
for (String word : data) {
     System.out.printf("%-10s --> %s%n",word,modVowels(word));
}

印刷品

bad        --> bavad
happy      --> havappy
computer   --> covompuvutever
java       --> javavava
vacuum     --> vavacuvuuvum
  • 将<code>newString</code>初始化为空字符串</li>
  • 然后将单词拆分为一个字符的单个字符串
  • 如果字符是元音,则追加修改后的字符串
  • 否则只需追加字符
  • 然后返回结果
public static String modVowels(String word) {
    String[] chars = word.split("");
    String newString = "";
    for (int i = 0; i < chars.length; i++) {
        String ch = chars[i];
        if ("aeiou".contains(ch)) {
            ch = ch+"v"+ch;
        }
        newString = String.join("",newString, ch);
    }
    return newString;
}
 类似资料:
  • 问题内容: 如何使用JavaScript从值读取换行符并将所有换行符替换为元素? 例: 从PHP传递的变量如下: 我希望我的结果在JavaScript转换后看起来像这样: 问题答案: 这会将所有退货转换为HTML 如果您想知道什么?:的意思。它称为非捕获组。这意味着括号内的正则表达式组不会保存在内存中,以后再引用。

  • 本文向大家介绍C++中string替换所有指定字符串的方法,包括了C++中string替换所有指定字符串的方法的使用技巧和注意事项,需要的朋友参考一下 C++的string提供了replace方法来实现字符串的替换,但是对于将字符串中某个字符串全部替换这个功能,string并没有实现,我们今天来做的就是这件事。 首先明白一个概念,即string替换所有字符串,将”12212″这个字符串的所有”12

  • 问题内容: 我有一个包含多个空格的字符串。我想用加号代替它们。我以为我可以用 但它只会替换第一次出现的情况。如何获得它来代替所有出现的情况? 问题答案: 这是不需要正则表达式的替代方法:

  • 问题内容: 用JavaScript替换字符串中所有字符串/字符实例的最快方法是什么?A ,- 循环,正则表达式? 问题答案: 最简单的方法是使用带有flag 的正则表达式替换所有实例: 这将替换所有出现的与字符串中。如果只有一个字符串,则可以将其转换为RegExp对象,如下所示:

  • 问题内容: 我正在编写一个小型JAVA程序,该程序: 将文本作为字符串 需要2个字符数组 我试图做的事情听起来像是“查找并替换”,但是并不相同,因此我认为清除它很重要。 无论如何,我想获取此文本,查找第一个数组中的任何字符是否与文本中的字符匹配,如果是,则将其替换为第二个字符数组中的匹配字符(根据索引)。 我将举一个例子来说明:假设我的文本(字符串)是:“ java很棒!”;我有2个数组(char

  • 这应该只得到数字和返回,但不做它作为预期的!有什么建议吗?