昨天系统报错,No group 6,上网查询,说是replaceAll()的问题,就具体试验了一下,发现如果不注意,就会产生隐含的错误。
java的String类的replaceAll方法是一个挺常用的方法,类型定义如下:
String replaceAll(String regex, String replacement)
有两个参数,第一个是被替换的字符串,是正则表达式,另外一个是替换成的字符串。
如果我们这样写:
upLoadedFileName.replaceAll("","/"); // 把//替换为/
是没有什么问题的,而且用好正则表达式可以实现很强的功能,如:
str.replaceAll("(?i)"+oldStr,newStr);//忽略大小写;
但是,使用中我们一定要记住,不仅仅第一个参数是正则表达式,第二个也是,因此如果这两个是可变参数,就要注意参数的内容,一篇文档说应该在所有的[ / ^ $ . | ? * + ( ) { }符号前面加上/符号。经过我的测试(jdk1.4),只有/和$容易出错。
比如:
System.out.println("/".replaceFirst("/", "//"));
系统会报:java.lang.StringIndexOutOfBoundsEx