为什么我从以下代码获得"AAAAAAAAA"而不是"1A234A567":
String myst = "1.234.567";
String test = myst.replaceAll(".", "A");
System.out.println(test);
Run Code Online (Sandbox Code Playgroud)
任何的想法?
试试这个:
String test = myst.replace(".", "A");
Run Code Online (Sandbox Code Playgroud)
区别:
replaceAll()将模式解释为正则表达式,replace()将其解释为字符串文字.
这是相关的源代码java.lang.String(由我缩进和评论):
public String replaceAll(String regex, String replacement) {
return Pattern.compile(regex)
.matcher(this)
.replaceAll(replacement);
}
public String replace(CharSequence target, CharSequence replacement) {
return Pattern.compile(
target.toString(),
Pattern.LITERAL /* this is the difference */
).matcher(this)
.replaceAll(
Matcher.quoteReplacement(
/* replacement is also a literal,
not a pattern substitution */
replacement.toString()
));
}
Run Code Online (Sandbox Code Playgroud)
参考:
replaceAllfunction将正则表达式作为参数.而正则表达式"." 意思是"任何角色".你必须转义它以指定它是你想要的角色:replaceAll("\\.", "A")
| 归档时间: |
|
| 查看次数: |
410 次 |
| 最近记录: |