5

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

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

换句话说,我如何表示字母字符?

也欢迎替代品,除非太长。

4

4 回答 4

11

JavaString#replaceAll将正则表达式字符串作为参数。话虽如此,它[a-ZA-Z]匹配从ato z(小写)和Ato Z(大写)的任何字符,这似乎是你需要的。

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

在此处查看演示

于 2013-11-10T05:58:52.933 回答
6

使用String#replaceAll需要一个Regex

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

请注意,String#replace将 String 作为参数而不是Regex。如果您仍想使用它,您应该逐个字符地循环字符串并检查此字符是否在 [az] 或 [AZ] 范围内并将其替换@. 但是,如果它不是家庭作业并且您可以使用replaceAll,请使用它:)

于 2013-11-10T05:58:51.410 回答
2

您可以使用以下(正则表达式):

    String test = "hello world! 722";
    System.out.println(test);
    String testNew = test.replaceAll("(\\p{Alpha})", "@");
    System.out.println(testNew);

您可以在此处阅读所有相关信息:http: //docs.oracle.com/javase/tutorial/essential/regex/index.html

于 2013-11-10T06:07:21.130 回答
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}", "@");
于 2020-07-03T00:30:24.393 回答