多语言展示
当前在线:323今日阅读:176今日分享:34

Java replace replaceAll 报错String index

Java replace replaceAll 报错 String index out of range: 1以及斜杠反斜杠在repalce replaceAll中遇到的一些问题总结反斜杠同时也是转义符在正则表达式里面
工具/原料
1

电脑

2

MyEclipse

方法/步骤
2

运行结果如图,(/)斜杠替换成一个反斜杠(\) ,由于反斜杠是转义符号在Java里面,两个反斜杠才能代表一个斜杠

3

用replaceAll 替换斜杠

4

报错如下:replaceall 有两个参数第一个参数是正则表达式,第二个是要替换的对象,匹配的时候没有报错,但是在替换的时候报错了,因为替换的对象为“”\\“”转义后就是睁着表达式的开始\并 没有内容,charAt 失败,替换的位置大于value长度Exception in thread 'main' java.lang.StringIndexOutOfBoundsException: String index out of range: 1 at java.lang.String.charAt(String.java:658) at java.util.regex.Matcher.appendReplacement(Matcher.java:762) at java.util.regex.Matcher.replaceAll(Matcher.java:906) at java.lang.String.replaceAll(String.java:2162) at com.henyep.ib.terminal.web.HtmlController.main(HtmlController.java:118)

5

replaceAll 替换用4个反斜杠,代表的就是1个/。在Java中两个//代表一个/,正则表达式里面也是两个//代表一个/。这个repalcement里第一个是代表正则表达式的斜杠 第二个才是值

6

运行后结果如图

7

运行如下语句的时候报错如下:fileUrl2= fileUrl2.replaceAll('\\', '\\\\');//运行报错。因为第一个参数错误regex正则表达式错误,只是一个/开始没有具体的值

8

用A替换路径中的斜杠,匹配成功输出如下结果。路径中fileurl2中的两个斜杠其实代表的是Java中的一个斜杠。然而replace 中第一个参数四个\\\\实则是匹配一个斜杠。大家在看个例子String fileUrl2='\\pdf\\test.pdf';fileUrl2= fileUrl2.replaceAll('\\\\', '\\\\');输出结果:fileUrl2 \pdf\test.pdf可以看出路径中的两个反斜杠也是代表了是一个反斜杠,replaceAll中4个反斜杠代表的是一个反斜杠运行String fileUrl2='\\pdf\\test.pdf';fileUrl2= fileUrl2.replaceAll('\\\\','\\\\\\\\');输出结果:fileUrl2 \\pdf\\test.pdf可以看出反斜杠的个数 把\ 替换成\\

注意事项

个人经验总结,如有不对的地方请多多指教

推荐信息