StringBuffer sb=new StringBuffer();
sb.append("900.00");
String price=sb.toString().replaceAll(".00", "");
System.out.println(price);
为什么输出是空???就是什么都没有,我晕不是BUG吧??有什么办法解决吗?

解决方案 »

  1.   

    不可能是bug,.是特殊字符来的吧
      

  2.   

    String price=sb.toString().replaceAll("\\.00", "");
      

  3.   

    .在正则表达式里,是代表一个字符。Pattern中有定义:
    . 任何字符(与行结束符可能匹配也可能不匹配) 
      

  4.   

    .是正则表达式的特殊字符
    String price=sb.toString().replaceAll("\\.00", "");
      

  5.   

    先tostring()变成了900 之后又用有""replace() 肯定是空啊
      

  6.   

    不用replaceAll,  就用.replace就行了
      

  7.   

    跟正则表达式没关系,.是JAVA中的关键字符,在String的源代码中有做处理,好像还有|也是,可以使用楼上的转义符,不过我一般是使用中括号[.],所以不知道\行不行。例如: String temp = new String("xyz.123");
    String [] a = temp.split("[.]");这样才可将其分成:xyz与123两个字符串,直接使用.是不行的。建议看一下String的源代码。
      

  8.   


    不知道就不要乱说好不好,这里就是正则表达式的问题。 “.”在正则表达式中就是代表除回车外的任意字符意思,这个是一个通用标准,与Java才是没有关系!
      

  9.   

    StringBuffer sb=new StringBuffer();
    sb.append("900.00");
    String price=sb.toString().replaceAll("[.]00", "");
    System.out.println(price);这样就可以了。那个点是特殊的字符
      

  10.   

    如果不会使用正则表达式,那就使用 String 的 replace 方法
    如果对正则表达式有一定地了解,那可以使用 String 的 replaceAll 方法不要被 replace 和 replaceAll 这两个方法名所迷惑了,这两个方法都是进行全局替换,只是前者是使用字符串,而后者是使用正则表达式。这样的两个方法名,可以说是 JDK 类库设计中的败笔!