[英]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.