首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

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

2013-12-02 
String.replaceAll(., \\)的报错问题public static void main(String[] args) {String s as s.

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


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

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

请问是什么原因?谢谢!
[解决办法]
replaceAll的参数就是regex,是正则表达式,首先会转义,所以报错。
把程序改为下面就可以了

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

[解决办法]
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("\", "\\\");

就会报正则表达式的错误。
[解决办法]
引用:
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

热点排行