替换字符,一次输入多个单词

replace characters, one input multiple words

我想出了一个方法将元音字母替换成 * 但它只转换了第一行

输入: 休息 罗伯特 是的

输出: br**k

这是代码

public class Solution {

    public static void main(String[] args) {
        String enterWord;
        Scanner scan = new Scanner (System.in);
        enterWord = scan.nextLine();
        enterWord = enterWord.replaceAll("[aeiou]", "*");
        
    System.out.println(enterWord);
    }
}

有什么方法可以读取所有三个单词吗?

您的代码在我的 env(Windows10, java1.8. 0_271), 也许你可以在 enterWord = enterWord.replaceAll("[aeiou]", "*"); 上设置一个断点并检查 enterWord 是否收到了整个输入字符串。

您需要一个循环来不断获取和处理输入。此外,我建议您将 (?i) 与正则表达式一起使用,使其成为 case-insensitive.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        String enterWord, answer = "y";
        Scanner scan = new Scanner(System.in);
        do {
            System.out.print("Enter a word: ");
            enterWord = scan.nextLine();
            enterWord = enterWord.replaceAll("(?i)[aeiou]", "*");
            System.out.println("After replacing vowels with * it becomes " + enterWord);
            System.out.print("Do you wish to conntinue[y/n]: ");
            answer = scan.nextLine();
        } while (answer.equalsIgnoreCase("y"));
    }
}

样本运行:

Enter a word: hello
After replacing vowels with * it becomes h*ll*
Do you wish to conntinue[y/n]: y
Enter a word: India
After replacing vowels with * it becomes *nd**
Do you wish to conntinue[y/n]: n

对于跨越多行的单个字符串,方法 String#replaceAll 适用于整个字符串,如下所示:

public class Main {
    public static void main(String[] args) {
        String str = "break\n" + 
                    "robert\n" + 
                    "yeah";
        System.out.println(str.replaceAll("(?i)[aeiou]", "*"));
    }
}

输出:

br**k
r*b*rt
y**h

使用此功能,您可以交互式地构建多行字符串,最后将所有元音更改为 *

演示:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        String text = "";
        Scanner scan = new Scanner(System.in);
        StringBuilder sb = new StringBuilder();
        System.out.println("Keep enter some text (Press Enter without any text to stop): ");
        while (true) {
            text = scan.nextLine();
            if (text.length() > 0) {
                sb.append(text).append(System.lineSeparator());
            } else {
                break;
            }
        }

        System.out.println("Your input: \n" + sb);
        String str = sb.toString().replaceAll("(?i)[aeiou]", "*");
        System.out.println("After converting each vowel to *, your input becomes: \n" + str);
    }
}

样本运行:

Keep enter some text (Press Enter without any text to stop): 
break
robert
yeah

Your input: 
break
robert
yeah

After converting each vowel to *, your input becomes: 
br**k
r*b*rt
y**h