在replaceAll中防止%到%20

时间:2018-10-16 08:05:54

标签: java regex servlets

我正在尝试在Java Servlet中格式化字符串以添加到JDBC SELECT查询中。我需要将%20替换为%以适应我的条件条件。

nameQuery.replaceAll("%20", "%");
String query = String.format("SELECT name, imageURL FROM User " + 
"WHERE name LIKE \'%%%s%%\' AND userID != %d", nameQuery, userId);

使用此代码,所有%20仍然不会被替换。对于nameQuery之类的"Allison%20s"值,调用nameQuery.replaceAll("%20", "%")会将其更改为"Allison%20s"(不变)。即使转义%也不能解决此问题。如何使replaceAll转换成%%20

1 个答案:

答案 0 :(得分:1)

似乎您实际上得到的是一个包含%20的字符串,您想用其他内容替换它。您可以使用replace

nameQuery = nameQuery.replace("%20", "%"); // replace %20 with a %

您还可以使用replaceAll,但是您似乎没有捕获replaceAll的返回值;只是调用它而忽略结果。