如何用Java中的特殊字符替换替换元音?

时间:2012-08-04 17:03:33

标签: java

public class ReplaceVowels {

    public static void main(String args[]) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Enter the String:");
        String str = bf.readLine();

        char[] c = new char[str.length()];
        for (int i = 0; i < str.length(); i++) {

            if (c[i] == 'a' || c[i] == 'e' || c[i] == 'i' || c[i] == 'o'
                    || c[i] == 'u') {

                System.out.println(str.replace(c[i], '?'));

            }

        }

    }
}

为什么str.replace方法不起作用?我该怎么做才能让它发挥作用?

5 个答案:

答案 0 :(得分:10)

在你的代码中,你创建了一个新的字符数组,它与字符串的长度相同,但是你没有用任何值初始化数组。

相反,请尝试:

char[] c = str.toCharArray();

但是,这不是做你想做的事情的最佳方式。您不需要字符数组或if语句来替换字符串中的字符:

String str = bf.readLine();
str.replace( 'a', '?' );
str.replace( 'e', '?' );
str.replace( 'i', '?' );
str.replace( 'o', '?' );
str.replace( 'u', '?' );
System.out.println( str );

replace函数将替换它找到的任何(和所有)字符,或者如果字符串中不存在该字符,它将不执行任何操作。

您可能还想查看使用regular expressions(正如edwga的回答中所指出的那样),这样您就可以将这5个函数调用缩短为一个:

str.replaceAll( "[aeiou]", "?" );

答案 1 :(得分:5)

老实说,这种解决方案相对不切实际。您应该使用str.replaceAll()方法。

(read in the String str);
str = str.replaceAll("[aeiou]", "?");
System.out.println(str);

这样做是因为它使用正则表达式“[aeiou]”并用特殊字符(“?”)替换它。正则表达式是一个复杂的主题,但这只是检测元音的每个实例。 您可以在http://docs.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html

了解有关正则表达式的更多信息

答案 2 :(得分:1)

这是用“ X”替换字符串中所有元音的一种方法。 (?i)使其不区分大小写。

String str = "hEllo";
str = str.replaceAll( "(?i)[aeiou]", "X" );

在类似情况下也可以更明确地显示

String str = "hEllo";
str = str.replaceAll( "[aeiouAEIOU]", "X" );

答案 3 :(得分:0)

以上所有答案都有效。 只需添加一些区分大小写以捕获大写的元音(使用扫描仪类)

i

答案 4 :(得分:0)

/***
 * Replace all vowels in an input string with
 * the corresponding numbers replace with 1,2,3,4,5
 * @author Kishore Diyyana
 */
public class ReplaceVowels {
    public static void main(String args[]) {
        ReplaceVowels rv = new ReplaceVowels();
        System.out.println(rv.replaceVowels("Kishore Babu Diyyana"));
    }
    public String replaceVowels(String inputStr) {
        return inputStr.replaceAll("[aA]","1").
                        replaceAll("[eE]","2").
                        replaceAll("[iI]","3").
                        replaceAll("[oO]","4").
                        replaceAll("[uU]","5");
    }
}