我有一段字符串中如"[test]".这是从客户端得到的。现在我想把 '['替换成其他的符号.
我是这样写的 str = str.replaceAll("[", "@"); // 编译正确,运行的时候出错了. 未关闭的表达式
我加个转义符 str = str.replaceAll("\[", "@"); // 编译都不通过了。。谁能告诉我怎么弄呢。谢谢 

解决方案 »

  1.   

    str = str.replaceAll("[[]", "@"); 
      

  2.   

    错了,应该是
    str.replaceAll("[\\[]", "@@")
      

  3.   

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

  4.   

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

  5.   


    或者
    str.replaceAll("\\[", "@@")
      

  6.   

    str=str.replace("[", "@");为什么要用replaceAll  直接用replace好了
      

  7.   

    并不是说替换所有的指定字符就用replaceAll.   不要被"ALL"所蒙蔽了replace("[","@")也是替换所有的"["符号.
      

  8.   

    支持用replace 速度快 本例无需用到regular expression
    replace("[","@");
      

  9.   

    在这个例子中replace和replaceAll有什么区别吗???
      

  10.   

    [code=Java]
    public class TestS {
        public static void main(String args[]) {
            String s = "[test]";
            System.out.println(s.replace("[","@"));
        }
    }
    [code]
    replace(str1,str2)是替换所有str1字符串
    replaceAll(reg1,str2)是替换所有匹配reg1正则表达式的字符串
      

  11.   

    replace不可以使用正则表达式,replaceAll可以
      

  12.   


    两者都是由正则表达式类库实现的,但是 replace 采用的是字符串原有的意思来替换,而 replaceAll 则是按照正则表达式的字符串来替换,正则表达式中有 15 个元字符,是有特殊意义的,使用时需要转义,这 15 个字符分别是:( [ { \ ^ - $ | } ] ) ? * + .转义时可以采用两种方式:1. 正则表达式中表述上述字符,需要在前面加上“\”,但是“\”是 Java 中的特殊字符,在 Java 代码中用“\\”表示正则表达式中的“\”。
    2. 在需要保留本身意义的前后加上 \Q 和 \E,把特殊字符放在这里面就成普通字符了。PS:若想表示一个“\”,在 Java 代码中需要使用“\\\\” :)
      

  13.   

    跟本不用加什么,就用:replace(“[”,“@”),即可。
      

  14.   

    str = str.replaceAll("\\[","@"); 
    向火龙果学习
      

  15.   

    在这个例子中replace和replaceAll有什么区别吗??? 
     两者都是由正则表达式类库实现的,但是 replace 采用的是字符串原有的意思来替换,而 replaceAll 则是按照正则表达式的字符串来替换,正则表达式中有 15 个元字符,是有特殊意义的,使用时需要转义,这 15 个字符分别是: ( [ { \ ^ - $  ¦ } ] ) ? * + . 转义时可以采用两种方式: 1. 正则表达式中表述上述字符,需要在前面加上“\”,但是“\”是 Java 中的特殊字符,在 Java 代码中用“\\”表示正则表达式中的“\”。 
    2. 在需要保留本身意义的前后加上 \Q 和 \E,把特殊字符放在这里面就成普通字符了。 PS:若想表示一个“\”,在 Java 代码中需要使用“\\\\” :)
      

  16.   

    str = str.replaceAll("\\[", "@");
    我也觉得是这样……