日期:2014-05-20  浏览次数:20841 次

java.lang.String replaceAll()方法的一个异常问题
我想把一个字符串中包含下面这行字符串中含的字符全部去掉
Java code


String strBadChar ="+,\',%,^,&,?,(,),<,>,[,],{,},/,\\,;,:," + (char)(34) +"," + (char)(0) + ",--";
String[] arrBadChar=new String[21];
int i;
String temString;
arrBadChar=strBadChar.split(",");
temString=charinput;//charinput存放的是自己输入的一个字符串(也就是想把charinput中包含有strBadChar 中的字符全部过滤掉)
for (i=0;i<arrBadChar.length;i++)
{
temString=temString.replaceAll(arrBadChar[i], "");//此处有问题
}
temString=temString.replaceAll("@@", "@");





------解决方案--------------------
我知道了。
replaceAll是利用正则表达式来替换的,如果字符串中含有正则表达式字符,则必须用转义字符将它表示成字母含义的字符,才能够进行替换。
------解决方案--------------------
比如+,应该写成\+,才能被识别成+号
------解决方案--------------------
String strBadChar ="\\+,\',%,^,&,\\?,\\(,\\),<,>,\\[,\\],\\{,\\},/,\\\\,;,:," + (char)(34) +"," + (char)(0) + ",--";