我要去掉一个指定字符串(str1) 中的指定字符(str2),以前一直用str1.replaceFirst(str2,"");今天遇到了 str2中包含“[”的问题,就报错了。。比如:
String str1 = "[电影天堂]红楼梦";
String str2 = "[电影天堂]";
str1.replaceFirst(str2,""); //不行
str1.replaceFirst(str2.replaceAll("\\u005B","\\u005B"),""); //也不行
str1.replaceFirst(str2.replaceAll("\\u005B","\\\\\\\\u005B"),""); //也不行
str1.replaceFirst(str2.replaceAll("\\u005B","\\u005C\\u005Cu005B"),""); //也不行
求解释!
String str1 = "[电影天堂]红楼梦";
String str2 = "[电影天堂]";
str1.replaceFirst(str2,""); //不行
str1.replaceFirst(str2.replaceAll("\\u005B","\\u005B"),""); //也不行
str1.replaceFirst(str2.replaceAll("\\u005B","\\\\\\\\u005B"),""); //也不行
str1.replaceFirst(str2.replaceAll("\\u005B","\\u005C\\u005Cu005B"),""); //也不行
求解释!
Pattern类中提供了转义方法String str1 = "[电影天堂]红楼梦";
String str2 = "[电影天堂]";
str1 = str1.replaceFirst(Pattern.quote(str2),"");
System.out.println(str1);
public class Test {
public static void main(String[] args) {
String str1 = "[电影天堂]红楼梦";
String str2 = "\\[电影天堂\\]";
str1 = str1.replaceFirst(str2,"");
System.out.println(str1);
}
}这样就行了啊,为什么要那么麻烦呢!
String str2 = "[电影天堂]";
System.out.println(str1.replace(str2,"")); //不支持正则的替换,当然也就不担心转义
sb.replace(0, 6, "");
System.out.println(sb);