public static void main(String[] args) {
       String str = "\\";
       str = str.replaceAll("\\", "\\\\");
       System.out.println(str);
    }
    
出错:
java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
 ^
at java.util.regex.Pattern.error(Pattern.java:1541)
at java.util.regex.Pattern.compile(Pattern.java:1298)
at java.util.regex.Pattern.<init>(Pattern.java:1047)
at java.util.regex.Pattern.compile(Pattern.java:785)
at java.lang.String.replaceAll(String.java:1663)
at org.luyang.StringUtil.main(StringUtil.java:14)
Exception in thread "main" 
==============================================================
请问如何实现上述功能?

解决方案 »

  1.   

    public static void main(String[] args) {
           String str = "\\";
           str = str.replaceAll("\", "\\\\");
           System.out.println(str);
        }你多了一个\
      

  2.   

    str = str.replaceAll("\\\\", "\\\\\\\\");这样就好了。
      

  3.   

    wmzsl(王明哲) ( ) 信誉:100    Blog ========================你的做法肯定是不对的。
      

  4.   

    str = str.replaceAll("\\\\", "\\\\\\\\");
      

  5.   

    上面的错了!看下面的!        String str = "\\";
           str = str.replaceAll("\\\\", "\\\\\\\\");
           System.out.println(str);是这样哈!
      

  6.   

    str = str.replaceAll("\\\\", "\\\\\\\\");有人知道原理么?
      

  7.   

    str = str.replaceAll("\\\\", "\\\\\\\\");
                          ^^^^    ^^^^^^^^
    有没有人给讲一下,这是怎么回事,我以前也试过。今天才知道要这么写。
      

  8.   

    \\\\经过Java转译后变成\\,在经过正则表达式转译后变成\楼主为什么不用
    str = str.replace("\\", "\\\\");
      

  9.   

    呵呵 现在才知道原来replace和replaceAll有这么大的区别
      

  10.   

    楼主为什么不用
    str = str.replace("\\", "\\\\");
    ================================这个写法无法编译通过的。public String replace(char oldChar, char newChar) {
    if (oldChar != newChar) {
        int len = count;
        int i = -1;
        char[] val = value; /* avoid getfield opcode */
        int off = offset;   /* avoid getfield opcode */     while (++i < len) {
    if (val[off + i] == oldChar) {
        break;
    }
        }
        if (i < len) {
    char buf[] = new char[len];
    for (int j = 0 ; j < i ; j++) {
        buf[j] = val[off+j];
    }
    while (i < len) {
        char c = val[off + i];
        buf[i] = (c == oldChar) ? newChar : c;
        i++;
    }
    return new String(0, len, buf);
        }
    }
    return this;
        }
      

  11.   

    str = str.replaceAll("\\\\", "\\\\\\\\");这个我试过了,不行!!!
      

  12.   

    str = str.replaceAll("\\\\", "\\\\");
    这样就行了
    前面一个\\\\是转换成正则表达式的\\,就是匹配\
    后面的\\\\就是String 里面的\\
      

  13.   

    这没有什么原理不原理的,就是考你的思维,JAVA中转义加正则表达式的转义.假如我们要用JAVA输出JAVASCRIPT中的一句字符串:System.out.println("var str = \"\\\\"\";");
    System.out.println("alert(str)");
    这个结果就是".你只要自己想明白就行了,没有什么原理,只是转义.
      

  14.   

    str = str.replaceAll("\\\\", "\\\\");
    这个好象也不行呀
      

  15.   

    public static void main(String[] args) {
           String str = "\\";
           str = str.replace("\\", Matcher.quoteReplacement("\\"));
           System.out.println(str);
        }