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
    
    
  • 相关阅读:
    MySQL 对于千万级的大表要怎么优化?
    随便写的一些docker使用操作命令
    零基础学python大概要多久?我用了30天
    普通人学python有意义吗?意义重大
    华为私有云组件
    Mysql 调优(二)分析思路
    MySQL 调优(一)调优原则
    shell脚本获取当前时间,分钟之前时间、小时之前时间和天之前时间
    java_windows环境变量自动设置脚本
    plsql中文乱码问题解决方案
  • 原文地址:https://www.cnblogs.com/sharysea/p/10965877.html
Copyright © 2011-2022 走看看