爲什麼我從下面的代碼得到 「AAAAAAAAA」 而不是 「1A234A567」:錯誤輸出使用的replaceAll
String myst = "1.234.567";
String test = myst.replaceAll(".", "A");
System.out.println(test);
任何想法?
爲什麼我從下面的代碼得到 「AAAAAAAAA」 而不是 「1A234A567」:錯誤輸出使用的replaceAll
String myst = "1.234.567";
String test = myst.replaceAll(".", "A");
System.out.println(test);
任何想法?
replaceAll
函數以正則表達式爲參數。正則表達式「。」意味着「任何角色」。你必須逃避它,以指定它是你想要的字符:replaceAll("\\.", "A")
你需要逃避.
使其
String myst = "1.234.567";
String test = myst.replaceAll("\\.", "A");
System.out.println(test);
試試這個:
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()
));
}
參考:
因爲輸入的每個字符都匹配正則表達式模式(.
)。要替換點,請使用此模式:\.
(或作爲Java字符串:"\\."
)。
可能的重複[反斜槓問題與String.replaceAll](http://stackoverflow.com/questions/1701839/backslash-problem-with-string -全部替換) – McDowell 2011-05-26 08:42:47