zoukankan      html  css  js  c++  java
  • java replaceAll Replace

    java ReplaceAll 的两个参数都必须是正则表达式。

    在正则表达式中 
    (一个斜线)是用 \ 来表示(即:用两个斜线表示一个斜线)

    而在Java语言中 (一个斜线)是用 \ 来表示。(即:也用两个斜线表示一个斜线)

    所以正则表达式为两个斜线("\")的写法,在Java语言中要用4个斜线来表示"\\"
    (即: 一个"现实中的斜线" 在 正则表达式中用2个斜线来表示,而在Java中2个斜线要用4个斜线来表示)

    所以代码如下:
    /*
    例如: str = "\\"; 实际上是表示2个斜线。
    你的目的是将2个"实际"斜线 替换为4个"实际斜线"
    需要编写如下代码
    */
    // str的实际内容是\ (即两个斜线)
    String str = "\\";
    //将str中的两个斜线,转换为两个双斜线(即: 4条斜线)
    str = str.replaceAll("\\", "\\\\");
    System.out.println(str);
     
     
    1. public static void main(String[] args) {   
    2.          String classPath = "java.lang.String";   
    3.          System.out.println(classPath.replaceAll(".", "/"));   
    输出结果是? 
    如果你认为是java/lang/String ,那你就错了。正确的输出结果是:////////////////
    原因:请先看看replace和replaceAll的区别。
    replace和replaceAll的区别:
    
    
    1、replace的参数是CharSequence和CharSequence,其中第一个是匹配的字符或字符串,第二个是替换的字符或字符串。即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,相当于字符串)
    2、replaceAll的参数是String和String,第一个参数regex,是替换规则(用正则表达式)。原因在于String类中replaceAll的实现用到Pattern进行正则表达式匹配(关于正则表达式可以baidu或google一下,以后有空再写篇文章总结下)。
    
    
     
    
    
    replaceAll的源代码如下:
    
    
    public String replaceAll(String regex, String replacement) {
         return Pattern.compile(regex).matcher(this).replaceAll(replacement);
    }
    
    
     
    
    
    在正则表达式中.(小圆点)表示匹配除换行符号外的任意字符,所以上面的例子才会出现16个/
    
    
    如果想匹配小圆点,可以用转义字符 则代码应该如下:
    
    
    System.out.println(classPath.replaceAll("\.", "/"));  //其中\匹配,之后的. 匹配.(小圆点)
    
    
    当然,你也可以用replace()进行处理,如下:
    
    
    System.out.println(classPath.replace(".", "/"));
     


     
  • 相关阅读:
    水木→函数式编程语言→lisp是不是主要用来编网站的?
    OpenMP 维基百科,自由的百科全书
    一个实际的Lisp项目开发心得 albert_lee的产品技术空间 博客频道 CSDN.NET
    ...
    OpenMPI
    Debian下安装NetBeans
    Linux Socket学习(十七)
    Linux Socket学习(十四)
    Debian下安装Latex
    Debian下安装virtualbox
  • 原文地址:https://www.cnblogs.com/yixianyixian/p/3718194.html
Copyright © 2011-2022 走看看