我希望我的程序替换输入字符串中的每个元音。
public static void main(String[] args) {
// TODO code application logic here
char vowel;
vowel = 'a'+'e'+'i'+'o'+'u';
Scanner keyboard = new Scanner (System.in);
System.out.print("Enter your name: ");
String name = keyboard.nextLine();
name = name.replace( vowel,'*');
System.out.print(name);
它只是正常返回字符串,但我希望元音是*。
答案 0 :(得分:2)
更改
name = name.replace( vowel,'*');
要
name = name.replaceAll("[aeiouAEIOU]","*");
答案 1 :(得分:1)
当你这样做时:
vowel = 'a'+'e'+'i'+'o'+'u';
你得到一个等于加起来的那些字符值的字符。 java中的字符存储为数字。相反,在每个元音上做String.replace。
替换:
name = name.replace( vowel,'*');
使用:
name = name.replace( vowel,'a');
name = name.replace( vowel,'e');
name = name.replace( vowel,'i');
name = name.replace( vowel,'o');
name = name.replace( vowel,'u');
你也可以在replaceAll
方法中使用正则表达式,如下所示:
name = name.replaceAll("[aeiou]",'*');
答案 2 :(得分:1)
name = name.replaceAll("(?i)[aeiou]", "*")
答案 3 :(得分:1)
首先,这个:
char vowel;
vowel = 'a'+'e'+'i'+'o'+'u';
根本不是你想要的。你基本上是在这里进行常规添加,将字符视为整数。
现在回答你的问题:你可以使用replaceAll
,但你也使用一个简单的循环:
char[] rawName = keyboard.nextLine().toCharArray();
for (int i = 0; i < rawName.length; i++) {
if ("aeiou".indexOf(rawName[i]) >= 0) {
rawName[i] = '*';
}
}
String name = String.valueOf(rawName);
答案 4 :(得分:0)
name=name.replaceall("[aeiou]","*'s");