java查找和替换%

java查找和替换%,java,string,replaceall,Java,String,Replaceall,在Java1.8.0中 我正在尝试替换%,但它不匹配 String str = "%28Sample text%29"; str.replaceAll("%29", "\\)"); str.replaceAll("%28", "\\("); System.out.println("Replaced string is " + str); 我试过所有这些,但都没用。提前谢谢。它正在工作。 您需要重新分配到str str = str.replaceAll("%29", "\

在Java1.8.0中 我正在尝试替换%,但它不匹配

  String str = "%28Sample text%29";

  str.replaceAll("%29", "\\)");

  str.replaceAll("%28", "\\(");
  System.out.println("Replaced string is " + str);
我试过所有这些,但都没用。提前谢谢。

它正在工作。 您需要重新分配到
str

  str = str.replaceAll("%29", "\\)");

  str = str.replaceAll("%28", "\\(");
它起作用了。 您需要重新分配到
str

  str = str.replaceAll("%29", "\\)");

  str = str.replaceAll("%28", "\\(");
这是正确的

但您只需使用
urldecker
对这些unicode值进行解码即可

String s = "%28Hello World!%29";
s = URLDecoder.decode(s, "UTF-8");
System.out.println(s);
将输出:

(世界你好!)

这是正确的

但您只需使用
urldecker
对这些unicode值进行解码即可

String s = "%28Hello World!%29";
s = URLDecoder.decode(s, "UTF-8");
System.out.println(s);
将输出:

(世界你好!)


问题是您误解了
replaceall
的用法。它用于基于正则表达式的替换。您需要使用的是正常的
replace
方法,如下所示:

String str = "%28Sample text%29";

str=str.replace("%29", "\\)"). replace("%28", "\\(");
System.out.println("Replaced string is " + str);

问题是您误解了
replaceall
的用法。它用于基于正则表达式的替换。您需要使用的是正常的
replace
方法,如下所示:

String str = "%28Sample text%29";

str=str.replace("%29", "\\)"). replace("%28", "\\(");
System.out.println("Replaced string is " + str);

如果实际上不需要匹配正则表达式,请使用
replace
replaceAll
不会对原始
字符串
对象进行任何更改。相反,结果将作为新的
String
对象返回。如果您实际上不需要匹配正则表达式,请使用
replace
replaceAll
不会对原始
String
对象进行任何更改。相反,结果将作为新的
字符串
对象返回。