簡體   English   中英

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

[英]How to replace replace vowels with a special character in 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方法不起作用? 我應該怎么做才能讓它發揮作用?

在您的代碼中,您正在創建一個新的字符數組,它的長度與您的字符串相同,但您沒有使用任何值初始化該數組。

相反,嘗試:

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函數將替換它找到的任何(和所有)字符,或者如果該字符不存在於字符串中,它將不執行任何操作。

您可能還想研究使用正則表達式(正如 edwga 的回答中所指出的那樣),這樣您就可以將這 5 個函數調用縮短為一個:

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

老實說,這個解決方案相對不切實際。 您應該改用 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閱讀更多關於正則表達式的信息

這是用“X”替換字符串中所有元音的一種方法。 (?i) 是使其不區分大小寫。

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

對於像這樣的情況也可以更明確:

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

以上所有答案均有效。 只需添加一些區分大小寫以捕獲大寫元音(使用掃描儀類)

       String str1, str2;
       Scanner scan = new Scanner(System.in);

       System.out.print("Enter a String : ");
       str1 = scan.nextLine();
       str2 = str1.replaceAll("[aeiouAEIOU]", "?");
       // adding AEIOU to capture Vowels in uppercase.
       System.out.println("All Vowels Removed Successfully");

       System.out.println(str2);
/***
 * 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");
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM