谁能告诉我,为什么我在运行这个方法以替换值时遇到index out of bouns异常?$
符号?
例如:我传话 $$vmdomodm$$
message = message.replaceAll("$", "$");
我试着看了一下这个论坛的帖子,但不明白内容。
这是一个特殊的字符,你需要使用转义符。
用这个试试 \\$
而且你的代码也没有意义,你试图用同样的内容来替换。
String message = "$$hello world $$";
message = message.replaceAll("\\$", "_");
System.out.println(message);
产出
__hello world __
更新
String message = "$hello world $$";
message = message.replaceAll("$", "\\$");
System.out.println(message);
产出
$hello world $$
因为你并没有真正使用任何regex,所以你应该使用代替replaceAll。String#replace 这样的方法。
message = message.replace("$", "$");
在用replaceAll()修修补补之后,一直没有得到我想要的东西 我想写一个函数来转义美元符号会更容易些.
public static String escapeDollarSign(String value) {
Pattern p = Pattern.compile("\\$");
int off = 0;
while (true) {
Matcher m = p.matcher(value.substring(off));
if (!m.find()) break;
int moff = m.start();
String left = value.substring(0, off+moff);
String right = value.substring(off+moff+1, value.length());
value = left+"\\$"+right;
off += moff+1+1;
}
return value;
}
例如 $re$gex $can $ b$e a$ pain$
变成 \$re\$gex \$can \$ b\$e a\$ pain\$