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

一、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 2022-02-11 11:43  周文豪  阅读(2765)  评论(0编辑  收藏  举报