zoukankan      html  css  js  c++  java
  • 关于java中replace、replaceAll、replaceFirst的用法

    今天突然看到Java中的replace有两种方法,一种是直接替换,另一种是可以进行匹配替换的方式:

    public String replace(CharSequence target,
                          CharSequence replacement)
    使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。该替换从字符串的开头朝末尾执行,例如,用 "b" 替换字符串 "aaa" 中的 "aa" 将生成 "ba" 而不是 "ab"。
    参数:
    target - 要被替换的 char 值序列
    replacement - char 值的替换序列
    返回:
    所得 String
    抛出:
    NullPointerException - 如果 target 或 replacement 为 null

    源码如下:

    public String replace(CharSequence target, CharSequence replacement) {
        return Pattern.compile(target.toString(), Pattern.LITERAL).matcher(this).replaceAll(Matcher.quoteReplacement(replacement.toString()));
    }

     ------------------------------------------------------------------------------------

    String的replaceAll用法

    public String replaceAll(String regex, String replacement) {
        return Pattern.compile(regex).matcher(this).replaceAll(replacement);
    }

    是将第一次参数作为正则表达式进行匹配:

    如:

    String a = "0010101";
    a = a.replace("^0", "(81)");
    System.out.println(a);
    // 此时输出的是(81)010101,因为^0翻译成正则表达式是第一个0,所以第一个0与正则表达式匹配,然后用(81)替换与正则表达式匹配的字符串

    但是replaceAll有区别的是:

    String a = "00010101";
    a = a.replaceAll("0", "(81)");
    System.out.println(a);
    // 输出的是(81)(81)(81)1(81)1(81)1

    ---------------------------------------------------------------------------------------

    replaceFirst用法:

    public String replaceFirst(String regex, String replacement) {
        return Pattern.compile(regex).matcher(this).replaceFirst(replacement);
    }

    是将第一次参数作为正则表达式进行匹配:

    如:

    String a = "0010101";
    a = a.replace("^0", "(81)");
    System.out.println(a);
    // 此时输出的是(81)010101,因为^0翻译成正则表达式是第一个0,所以第一个0与正则表达式匹配,然后用(81)替换与正则表达式匹配的字符串

    但是replaceAll有区别的是:

    String a = "00010101";
    a = a.replaceAll("0", "(81)");
    System.out.println(a);
    // 输出的是(81)0010101
    
    
  • 相关阅读:
    ANDROID STUDIO系列教程一--下载与安装
    Linux发邮件之mail命令
    Linux/CentOS关闭图形界面(X-window)和启用图形界面命令
    SVN四部曲之SVN设置详解深入
    构造函数 (C++)
    C++的构造函数和析构函数
    当你输入一个网址的时候,实际会发生什么?
    C++ 风格与技术 FAQ(中文版)
    二分查找算法(递归与非递归两种方式)
    c++模板
  • 原文地址:https://www.cnblogs.com/sharysea/p/10965877.html
Copyright © 2011-2022 走看看