4 回答

TA貢獻(xiàn)1898條經(jīng)驗 獲得超8個贊
只需從更改inputString.replaceAll(Pattern.quote(patternToReplace), "$0");為inputString.replaceAll(patternToReplace, "\\$0");
我已經(jīng)用這段代碼測試過:
public static final String REPLACE_PATTERN = "(?<=^|[^A-Za-z])(%s)(?=[^A-Za-z]|$)";
String patternToReplace = String.format(REPLACE_PATTERN, "a");
inputString = inputString.replaceAll(patternToReplace, "\\$0");
System.out.println(inputString);
輸出 :
$0 car4is $05car
希望這對你有幫助:)

TA貢獻(xiàn)2039條經(jīng)驗 獲得超8個贊
你引用了錯誤的東西。你不應(yīng)該引用模式。您應(yīng)該引用"a"
- 模式中應(yīng)該按字面意義對待的部分。
String patternToReplace = String.format(REPLACE_PATTERN, Pattern.quote("a"));
如果您永遠(yuǎn)不會在 的第二個參數(shù)中放置任何其他字母format
,那么您根本不需要quote
,因為字母在正則表達(dá)式中沒有特殊含義。
此外,$
用作替換時具有特殊含義,因此您需要對其進(jìn)行轉(zhuǎn)義:
inputString = inputString.replaceAll(patternToReplace, "\\$0");

TA貢獻(xiàn)1796條經(jīng)驗 獲得超4個贊
當(dāng)你想用替換字符串的匹配部分時"$0"
,你必須寫它"\\$0"
。這是因為$0
有一個特殊的含義:匹配字符串。所以你自己替換字符串。
添加回答
舉報