String#replaceFirst 似乎随机不起作用

Big*_*d_E 0 java regex

我有一个字符串,我尝试替换 %s 的第一次出现。

例如:

"$%s".replaceFirst("%s", "10");
Run Code Online (Sandbox Code Playgroud)

返回 10 美元,但

"&cYou do not have %s!".replaceFirst("%s", "$10");
Run Code Online (Sandbox Code Playgroud)

抛出 java.lang.IndexOutOfBoundsException: No group 1

我有打印语句,我知道 100% 是抛出错误的原因,这就是语句中的内容。

itw*_*tme 6

包含$前缀的替换被视为组匹配器(即它尝试仅替换匹配的组。

因此$需要使用以下方法进行转义\\

System.out.println("&cYou do not have %s!".replaceFirst("%s", "\\$10"));
Run Code Online (Sandbox Code Playgroud)