replaceAll、replaceFirst使用需要注意的问题

本文介绍了Java中String类的replaceAll()和replaceFirst()方法在使用时需要注意的问题,特别是当参数包含正则表达式的特殊字符如/和$时,可能会导致意外的错误。作者提供了两个自定义方法作为替代方案,以避免这些潜在问题。
摘要由CSDN通过智能技术生成

    昨天系统报错,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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值