如何替换字符串中的多个字符?

时间:2014-04-25 01:03:41

标签: java char

我希望我的程序替换输入字符串中的每个元音。

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);

它只是正常返回字符串,但我希望元音是*。

5 个答案:

答案 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");