我想知道是否可以使用 string.replace()
来替换字符串中的所有字母?
String sentence = "hello world! 722"
String str = sentence.replace("what to put here", "@");
//now str should be "@@@@@ @@@@@! 722"
换句话说,如何表示字母字符?欢迎提供其他替代方案,除非太长。
Java的 String#replaceAll
方法接受一个正则表达式字符串作为参数。也就是说,[a-zA-Z]
匹配从小写字母 a
到 z
(小写)和大写字母 A
到 Z
(大写)之间的任何字符,这似乎是你需要的。
String sentence = "hello world! 722";
String str = sentence.replaceAll("[a-zA-Z]", "@");
System.out.println(str); // "@@@@@ @@@@@! 722"
请查看这里的演示。
使用带有正则表达式的String#replaceAll
方法:
str = str.replaceAll("[a-zA-Z]", "@");
String#replace
方法需要一个字符串作为参数而不是正则表达式。如果您仍想使用它,您应该逐个字符循环字符串并检查此字符是否在[a-z]或[A-Z]范围内,并用@
替换它。但如果这不是一项作业且您可以使用replaceAll
,请使用它 :) String test = "hello world! 722";
System.out.println(test);
String testNew = test.replaceAll("(\\p{Alpha})", "@");
System.out.println(testNew);
你可以使用String#replaceAll
替换正则表达式。模式[a-zA-Z]
将匹配所有小写英文字母(a-z
)和大写字母(A-Z
)。在这里可以看到下面的代码示例。
final String result = str.replaceAll("[a-zA-Z]","@");
如果您想替换所有语言环境中的字母字符,请使用模式\p{L}
。 Pattern
的文档说明如下:
\p{L}和\p{IsL}都表示Unicode字母类别。
在此处查看代码示例。
final String result = str.replaceAll("\\p{L}", "@");
[a-zA-Z]
正则表达式的更多信息,请参见:http://www.regular-expressions.info/charclass.html - acdcjunior