为什么我从以下代码获得“AAAAAAAAA”而不是“1A234A567”:
String myst = "1.234.567";
String test = myst.replaceAll(".", "A");
System.out.println(test);
任何想法?
答案 0 :(得分:7)
试试这个:
String test = myst.replace(".", "A");
区别:
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()
));
}
<强>参考:强>
答案 1 :(得分:6)
replaceAll
函数将正则表达式作为参数。而正则表达式“。”意思是“任何角色”。你必须转义它以指定它是你想要的角色:replaceAll("\\.", "A")
答案 2 :(得分:1)
您需要转义.
制作
String myst = "1.234.567";
String test = myst.replaceAll("\\.", "A");
System.out.println(test);
答案 3 :(得分:0)
因为输入的每个字符都匹配正则表达式模式(.
)。要替换点,请使用以下模式:\.
(或作为Java字符串:"\\."
)。