【发布时间】:2020-08-19 09:13:57
【问题描述】:
所以我已经看过这个简单的问题并回答了几次,我只是想尝试一种不同的方法来解决它。 我的解决方案确实有效 - 它用空字符替换每个元音。 但是,我一直试图在我的代码中找出一种方法,可以简单地删除字符,而不是用 empty char ' ' 替换。
例如... 在我的代码中,如果用户输入:happy,结果是 h ppy
虽然这确实回答了这个问题,但我还希望看到输出:hppy
希望我能得到一些帮助,谢谢!
import java.util.Scanner;
public class Main {
public static void main(String args[]){
char [] vowels = {'a','e','i','o','u',
'A','E','I','O','U'};//char array
Scanner in = new Scanner(System.in);
System.out.println("Enter phrase: ");
String phrase = in.nextLine();
for (int i = 0; i < phrase.length(); i++) {
for (int j = 0; j < vowels.length; j++) {
char ch = vowels[j];
char ch2 = phrase.charAt(i);
if (ch == ch2) {
phrase = phrase.replace(phrase.charAt(i), ' ');
}
}
}
System.out.println(phrase);
【问题讨论】:
-
phrase = phrase.replaceAll("[AEIOUaeiou]", "")是最简单的。 -
请注意
phrase.replace会将一个字符的所有实例替换为另一个字符。因此,如果有 10 个 'e',第一次调用 replace 将替换所有 10 个,以后您将永远不会看到另一个 'e'。 -
一个惯用的手动解决方案(即不使用
replaceAll)将涉及StringBuilder,将所有非元音字符复制到其中,然后在其上调用toString()。
标签: java arrays replace char comparator