String s1="d:\\father\\son.xml";
String s2=s1.replaceAll("\\","@");
System.out.println(s2);出错,出错消息为:Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed character class near index 2
[\]
  ^
at java.util.regex.Pattern.error(Pattern.java:1713)
at java.util.regex.Pattern.clazz(Pattern.java:2254)
at java.util.regex.Pattern.sequence(Pattern.java:1818)
at java.util.regex.Pattern.expr(Pattern.java:1752)
at java.util.regex.Pattern.compile(Pattern.java:1460)
at java.util.regex.Pattern.<init>(Pattern.java:1133)
at java.util.regex.Pattern.compile(Pattern.java:823)
at java.lang.String.replaceAll(String.java:2190)
at com.Xml.main(Xml.java:38)
求高手解决

解决方案 »

  1.   

    String s1="d:\\father\\son.xml";
    String s2=s1.replaceAll("\\\\","@");
    System.out.println(s2);
      

  2.   

    replaceAll()里第一个参数是正则
    replaceAll(Pattern.quote("\\"),"@");
    或你用
    replace 
      

  3.   

    你是要把字串中的 \ 替换成 @,用 s1.replace ('\\', '@') 就可以了。 replaceAll(String, String) 中的第一个参数要求的是正则表达式,你书写的方法不符正则表达式的语法规则。
      

  4.   

    replaceAll第一个参数是正则,所以要转义,\\\\这样就对了
      

  5.   

    replaceAll(String s1, String s2)
    第一个参数要求是正则表达式
    Java里以\开头表示是正则表达式,还要转义
      

  6.   

    str = str.replace('\\', '@');