• 关于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
    
    
  • 相关阅读:
    刚刚找到的IP地址对应地区数据库
    SQL2000中像SQL2005中的Row_Number一样获取行号
    KindEditor3.4.4版的ASP.NET版本
    使用程序代码输出论坛回复第X层楼
    IIS上启用Gzip压缩(HTTP压缩)详解(PDF)
    ASP.NET中过滤HTML字符串的两个方法
    七个受用一生的心理寓言
    Android获取其他包的Context实例然后XX(转载)
    android junit基础教程
    java获取web容器地址
  • 原文地址:https://www.cnblogs.com/sharysea/p/10965877.html
Copyright © 2020-2023  润新知