• 关于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无限循环轮播广告位Banner
    Android自定义View绘图实现拖影动画
    Android Material Design : Ripple Effect水波波纹荡漾的视觉交互设计
    ArrayList的线程安全测试
    异常总结
    java反射
    数据结构之链表
    移位运算符
    java设计模式:单例模式
    第三章:多态
  • 原文地址:https://www.cnblogs.com/sharysea/p/10965877.html
Copyright © 2020-2023  润新知