在Java中不使用替换函数替换字符
我想用“<;”替换"<(><<)>"
但在我的情况下,它并没有取代
public class Test2 {
public static void main(String[] args)
{
String s1 = "<(><<)>script>";
if( s1.contains("<(><<)>"))
{
s1.replaceAll("<(><<)>","<");
}
System.out.println("completeText"+s1);
}
}
# 1 楼答案
String.replaceAll
方法将第一个参数作为Regex
。因此,您需要避开(
和)
,它们在Regex
中具有特殊意义或者,您可以使用
Pattern.quote
方法为您转义特殊字符。另外,您需要将replaceAll
方法的return value
存储在string s1
中。因为Java中的Strings
是不可变的,所以您调用的字符串类的任何方法都会返回一个modified string
。您需要使用返回值,否则将看不到任何更改因此,您需要将代码修改为:-
如果
pattern
存在于字符串中,则会自动替换它,否则返回未修改的字符串# 2 楼答案
那是因为
replaceAll
的第一个参数是正则表达式,这意味着您必须转义一些字符李>replaceAll
不会更改您传递的字符串,而是构建一个新字符串)使用
还请注意,您不必测试
if( s1.contains("<(><<)>"))
:这会添加一个无用的条件,replaceAll
足够快