这样吧
public static void main(String[] args) {
String fname = "b[1].jpg";
fname = fname.replace("[", "\\[").replace("]","\\]");
String text = "file\\a.jpg|file\\b[1].jpg|file\\c.jpg";
text = text.replaceAll("file\\\\" + fname + "\\|", "");
System.out.println(text);
}
public static void main(String[] args) {
String fname = "b[1].jpg";
fname = fname.replace("[", "\\[").replace("]","\\]");
String text = "file\\a.jpg|file\\b[1].jpg|file\\c.jpg";
text = text.replaceAll("file\\\\" + fname + "\\|", "");
System.out.println(text);
}
不过这样有多个的话只能替换掉一个
上面说了,这里只是测试实例啊,不是单单解决这个问题,要解决这系列问题,fname是个变量,我这里值为b[1].jpg,实际上各种值都可能有,如:b(1).jpg,b(1)(2)[1][3][sss(.jpg,等等,甚至还有$%{}^等等字符,有没个通用的解决方法呢?
如果把所有的正则字符都转义过去,也确实够麻烦的了,看来貌似没有更好的办法了(不用正则,要得多写代码)
fname = fname.replaceAll("([\\[\\]()])", "\\\\$1");
fname = fname.replaceAll("([\\[\\]()])", "\\\\$1");
System.out.println(fname);