• java字符串的替换replace、replaceAll、replaceFirst的区别详解


    如果不是刚刚复习了下正则表达式,我可能也不会注意到,原来String的replaceAll跟replaceFirst用到了正则表达式!

    不多解释,看代码:

    1
    2
    3
    4
    String s = "my.test.txt";
    System.out.println(s.replace(".""#"));
    System.out.println(s.replaceAll(".""#"));
    System.out.println(s.replaceFirst(".""#"));

    运行结果:

    1
    2
    3
    my#test#txt
    ###########
    #y.test.txt

    是不是感觉很神奇?

    其实懂正则表达式的应该已经发现了,是的,“.”是正则表达式的元字符,匹配除换行符以外的任意字符,所以replaceAll、replaceFirst才出现了这样的结果。

    而replace没有用到正则表达式,但会把所有“.”替换掉,很多人可能会误解replace是替换单个,而replaceAll是替换全部,其实这是错的(我以前也是这么想的- -)。replace只是没有用到正则表达式,但会替换所有匹配的字符串。

    到这里一些不懂正则表达式的小伙伴可能就要喊坑爹了,“那我不想用正则表达式去替换第一个字符串肿么办?”其实也很简单,只要将元字符串转义就行了。 

    1
    s.replaceFirst("\.""#")

    运行结果: 

    1
    my#test.txt

    这里给个会被正则表达式识别的字符列表:

    .匹配除换行符以外的任意字符

    ^匹配字符串的开始

    $匹配字符串的结束

    *重复零次或更多次

    +重复一次或更多次

    ?重复零次或一次

    当然,正则可远不止这么点,个人建议花点时间去学习一下比较好~

    补充:String的split也是用到了正则表达式,使用的时候注意点哦!

  • 相关阅读:
    Navigator对象
    Location对象
    History 对象
    计时器用法
    window对象
    某班的成绩出来了,现在老师要把班级的成绩打印出来,和 显示当前时间
    牛客练习赛14A(唯一分解定理)
    贪心法(举例子强行凑规律)
    线性筛(欧拉筛法)
    欧拉函数
  • 原文地址:https://www.cnblogs.com/fanblogs/p/10674866.html
Copyright © 2020-2023  润新知