随笔 - 755  文章 - 0 评论 - 33 阅读 - 135万
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

正则表达式虽然功能强大,但是其效率较低除非是有需要,否则尽可能少用。

一、replaceAll()和replace()的相同点:

  都是全部替换,即把源字符串中的某一字符或字符串全部换成指定的字符或字符串;

二、replaceAll()和replace()的不同点:

replaceAll() 支持正则,replace() 不支持正则。

replaceAll的参数是regex,即基于规则表达式的替换,比如:可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号;

replaceAll支持正则表达式,因此会对参数进行解析(两个参数均是),如replaceAll("\\d", "*"),而replace则不会,replace("\\d","*")就是替换"\\d"的字符串,而不会解析为正则。

三、建议:

1、如果仅仅是字符的替换建议使用replace()。

2、如果只想替换第一次出现的,可以使用replaceFirst(),这个方法也是基于规则表达式的替换,但与replaceAll()不同的是,只替换第一次出现的字符串。

例子1:

复制代码
/**
     * token 到期退出登录
     *
     * @param token
     * @return
     */
    public boolean logout(String token) {
        try {
            User u = new User();
            token = token.replaceAll(pre + "TPS-TOKEN", "");
            String userId = token.substring(15, token.length());/** 截取userId*/
            if (StringUtils.isNotEmpty(userId)) {
                u.setUserId(Integer.parseInt(userId));
            }
            if (null != u && u.getUserId() != null) {
                logout(u, token);
            }
        } catch (Exception e) {
            logger.error(e.getMessage());
        }
        return true;
    }
复制代码

 



感谢您的阅读,如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮。本文欢迎各位转载,但是转载文章之后必须在文章页面中给出作者和原文连接
posted on   周文豪  阅读(2991)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
点击右上角即可分享
微信分享提示