使用replace函数替换字符串中的字母?

5

我想知道是否可以使用 string.replace() 来替换字符串中的所有字母?

String sentence = "hello world! 722"
String str = sentence.replace("what to put here", "@");
//now str should be "@@@@@ @@@@@! 722"

换句话说,如何表示字母字符?欢迎提供其他替代方案,除非太长。
4个回答

11

Java的 String#replaceAll 方法接受一个正则表达式字符串作为参数。也就是说,[a-zA-Z] 匹配从小写字母 az(小写)和大写字母 AZ(大写)之间的任何字符,这似乎是你需要的。

String sentence = "hello world! 722";
String str = sentence.replaceAll("[a-zA-Z]", "@");
System.out.println(str); // "@@@@@ @@@@@! 722"

请查看这里的演示


关于 [a-zA-Z] 正则表达式的更多信息,请参见:http://www.regular-expressions.info/charclass.html - acdcjunior

6

使用带有正则表达式String#replaceAll方法:

str = str.replaceAll("[a-zA-Z]", "@");

请注意,String#replace 方法需要一个字符串作为参数而不是正则表达式。如果您仍想使用它,您应该逐个字符循环字符串并检查此字符是否在[a-z]或[A-Z]范围内,并用@替换它。但如果这不是一项作业且您可以使用replaceAll,请使用它 :)

@Arch1tect 这不奇怪,是我的错误 :)) - Maroun

2

我认为这更像是一种主要解决方案,而a-zA-Z解决方案只是针对几乎仅限于英语区域的替代方案。(夏威夷也可以。: ^) - Mike Housky

0

你可以使用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}", "@");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接