首页 > 解决方案 > String#replaceFirst 似乎无法随机工作

问题描述

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

例如:

"$%s".replaceFirst("%s", "10");

返回 10 美元,但

"&cYou do not have %s!".replaceFirst("%s", "$10");

抛出 java.lang.IndexOutOfBoundsException: No group 1

我有打印语句,我知道 100% 是什么引发了错误,这就是语句中的内容。

标签: javaregex

解决方案


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

所以$需要通过以下方式进行转义\\

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

推荐阅读