代碼優化:String替換盡量少用正則表達式(replace()和replaceAll()的區別)


正則表達式雖然功能強大,但是其效率較低除非是有需要,否則盡可能少用。

一、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;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM