Java String类的replaceAll方法

本文解析了一道代码勇士挑战题目,任务是编写一个函数来计算给定字符串中超出'a'到'm'范围的字符数量,并返回该数量与字符串总长度的比例。提供了两种实现方式:一种是遍历字符串并检查每个字符;另一种是利用正则表达式替换方法简化过程。

代码勇士真题:

给定一个字符串由a-z字母组成的字符串s,长度任意字母可任意组合。

要求编写函数找出s中不在a-m范围内的字母个数n,要求函数返回字符串格式为:n/s的长度

例如:

s="aaabbbbhaijjjm"
error_printer(s) => "0/14"

s="aaaxbbbbyyhwawiwjjjwwm"
error_printer(s) => "8/22"

public class Printer {
    public static String printerError(String s) {
        if(s.length()==0){
            return "";
        }else{
            StringBuffer pattern = new StringBuffer("abcdefghijklm");
            char[] chr = s.toCharArray();
            int errorCount=0;
            for(char c:chr){

                if(pattern.indexOf(String.valueOf(c))<0){
                    errorCount++;
                }
            }
            //return "\""+errorCount+"/"+s.length()+"\"";
            return String.format("%d/%d",errorCount,s.length());
        }
    }

    public static String printerErrorBest(String s) {
        return s.replaceAll("[a-m]", "").length() + "/" + s.length();
    }

    public static void main(String[] args) {
        System.out.println(printerError("aaabbbbhaijjjm"));
    }
}



说明:

public String replaceAll(String regex,
                String replacement)
Replaces each substring of this string that matches the given  regular expression with the given replacement.

使用replacement参数替换源字符串中所有满足正则表达式的子字符串。



Java 中,`String` 提供了 `replace` 和 `replaceAll` 两种方法用于字符串替换,它们在功能和使用场景上存在显著差异。 ### replace 方法 `replace` 方法用于将字符串中所有匹配的字符或字符序列替换为另一个字符或字符序列。它支持两种重载形式: - `String replace(char oldChar, char newChar)`:将字符串中所有的 `oldChar` 替换为 `newChar`。 - `String replace(CharSequence target, CharSequence replacement)`:将字符串中所有与 `target` 相等的字符序列替换为 `replacement`。 此方法不会使用正则表达式,而是直接进行匹配替换。例如: ```java String str = "hello world"; String result = str.replace('l', 'z'); // 将字符 'l' 替换为 'z' System.out.println(result); // 输出: hezzo worzd ``` ```java String str = "hello world"; String result = str.replace("world", "Java"); // 将 "world" 替换为 "Java" System.out.println(result); // 输出: hello Java ``` ### replaceAll 方法 `replaceAll` 方法用于将字符串中所有匹配给定正则表达式的内容替换为指定的字符串。其语法如下: - `String replaceAll(String regex, String replacement)`:将所有匹配 `regex` 的内容替换为 `replacement`。 此方法基于正则表达式进行匹配和替换,因此可以处理更复杂的模式匹配。例如: ```java String str = "hello123 world456"; String result = str.replaceAll("\\d+", "X"); // 将所有数字替换为 X System.out.println(result); // 输出: helloX worldX ``` ```java String str = "abc123def456"; String result = str.replaceAll("[a-z]+", "#"); // 将所有小写字母组成的字符串替换为 # System.out.println(result); // 输出: #123#456 ``` ### 总结 - `replace` 更适合用于直接的字符或字符串替换,不涉及正则表达式。 - `replaceAll` 更适用于基于正则表达式的复杂替换操作。 在选择使用 `replace` 还是 `replaceAll` 时,应根据具体需求判断是否需要正则表达式支持。如果仅进行简单替换,推荐使用 `replace`,以避免不必要的正则解析开销[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值