String.replaceAll(".", "\\")的报错问题

java2670655722 2013-11-29 10:19:31

public static void main(String[] args) {
String s = "a";
s = s.replaceAll(".", "\\");
}

以上程序报错如下:
java.lang.StringIndexOutOfBoundsException: String index out of range: 1

请问是什么原因?谢谢!
...全文
401 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyl1007931988 2013-11-30
  • 打赏
  • 举报
回复
引用 2 楼 cczbbwish 的回复:
java replaceAll() 方法要用 4 个反斜杠,表示一个反斜杠 例如 str1="aa\bbb"; str2="aa'bbb"; 要想替换成 str1="aa\\bbb";str2="aa\'bbb"; 必须这样替换: str1 = str1.replaceAll("\\\\", "\\\\\\\\"); str2 = str2.replaceAll("'", "\\\\'"); 原因如下: String 的 replaceAll() 方法,实际是采用正则表达式的规则去匹配的, \\\\ ,java解析为\\交给正则表达式, 正则表达式再经过一次转换,把\\转换成为\ 也就是java里面要用正则来表示一个\. 必须写成4个\ 如果要表示\\,那就要写8个\ 所以如果写成: str1 = str1.replaceAll("\\", "\\\\"); 就会报正则表达式的错误。
有点笨 2013-11-30
  • 打赏
  • 举报
回复
正则表达式中\\表示\ 而java语言中\\表示字符\,因此表示两个\\就要用\\\\
solomon5926 2013-11-29
  • 打赏
  • 举报
回复
引用 2 楼 cczbbwish 的回复:
java replaceAll() 方法要用 4 个反斜杠,表示一个反斜杠 例如 str1="aa\bbb"; str2="aa'bbb"; 要想替换成 str1="aa\\bbb";str2="aa\'bbb"; 必须这样替换: str1 = str1.replaceAll("\\\\", "\\\\\\\\"); str2 = str2.replaceAll("'", "\\\\'"); 原因如下: String 的 replaceAll() 方法,实际是采用正则表达式的规则去匹配的, \\\\ ,java解析为\\交给正则表达式, 正则表达式再经过一次转换,把\\转换成为\ 也就是java里面要用正则来表示一个\. 必须写成4个\ 如果要表示\\,那就要写8个\ 所以如果写成: str1 = str1.replaceAll("\\", "\\\\"); 就会报正则表达式的错误。
看来我的解释还不到位额,+1
cczbbwish 2013-11-29
  • 打赏
  • 举报
回复
不久之前看到的,具体链接在这http://bbs.csdn.net/topics/200023433
cczbbwish 2013-11-29
  • 打赏
  • 举报
回复
java replaceAll() 方法要用 4 个反斜杠,表示一个反斜杠 例如 str1="aa\bbb"; str2="aa'bbb"; 要想替换成 str1="aa\\bbb";str2="aa\'bbb"; 必须这样替换: str1 = str1.replaceAll("\\\\", "\\\\\\\\"); str2 = str2.replaceAll("'", "\\\\'"); 原因如下: String 的 replaceAll() 方法,实际是采用正则表达式的规则去匹配的, \\\\ ,java解析为\\交给正则表达式, 正则表达式再经过一次转换,把\\转换成为\ 也就是java里面要用正则来表示一个\. 必须写成4个\ 如果要表示\\,那就要写8个\ 所以如果写成: str1 = str1.replaceAll("\\", "\\\\"); 就会报正则表达式的错误。
solomon5926 2013-11-29
  • 打赏
  • 举报
回复
replaceAll的参数就是regex,是正则表达式,首先会转义,所以报错。 把程序改为下面就可以了

public static void main(String[] args) {
	    String s = "a";
	    s = s.replaceAll(".", "\\\\");
	}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧