JavaScript常用字符串處理方法

StringUtils提供一些常用的字符串處理方法,包括除去字符串兩端空白、字符串左右兩邊填補字符、字符串格式化、字符串html編碼和字符串html解碼。

方法 描述
StringUtils.trim(str) 除去字符串兩端空白
StringUtils.format(str, object…) 字符串格式化
StringUtils.leftPad(str, size, character) 在字符串左邊填補字符character,填補後的字符串長度爲size
StringUtils.rightPad(str, size, character) 在字符串右邊填補字符character,填補後的字符串長度爲size
StringUtils.htmlEncode(str) 字符串中的html字符轉義
StringUtils.htmlDecode(str) 字符串中的html字符還原


/**
 * 常用的字符串處理方法
 * @author [email protected]
 * @date 2015-08-12
 */
StringUtils = (function(){
    var
        // 字符串去掉兩邊空白正則表達式
        trimRegex = /^[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+|[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000]+$/g,

        // 字符串格式化正則表達式
        formatRegex = /\{(\d+)\}/g,

        htmlEncodeMap = {
            '"': """,
            '&': "&",
            "'": "'",
            '<': "&lt;",
            '>': "&gt;"
        },

        htmlDecodeMap = {
            '&#39;': "'",
            '&amp;': "&",
            '&gt;': ">",
            '&lt;': "<",
            '&quot;': '"'
        },

        htmlEncodeRegex = /(&|>|<|"|')/g,

        htmlDecodeRegex = /(&amp;|&gt;|&lt;|&quot;|&#39;|&#[0-9]{1,5};)/g;

    return {
        /**
         * 除去字符串兩端的空白字符
         * @param   str  {String}  字符串
         * @return  返回處理後的字符串
         */
        trim: function(str){
            return str.replace(trimRegex, '');
        },

        /**
         * 允許用格式化的方式給傳值
         * var cls = 'css-class', text = '內容';
         * var str = Rhui.String.format('<div class="{0}">{1}</div>', cls, text);
         * // str的內容是 <div class="css-class">內容</div>
         *
         * @param  str        {String}  待格式化的字符串
         * @param  params...  {Object}  與字符串中{0}、{1}...匹配的內容
         * @return 返回格式化後的字符串
         */
        format: function(str) {
            var i, args = arguments, len = args.length, arr = [];
            for(i = 1; i < len; i++){
                arr.push(args[i]);
            }

            return str.replace(formatRegex, function(m, i) {
                return arr[i];
            });
        },

        /**
         * 填補字符串左邊
         * @param   str        {String}  原字符串
         * @param   size       {Number}  填補後的長度
         * @param   character  {String}  填補的字符,如果不填則爲空字符' '
         * @return  返回填補後的字符串
         */
        leftPad: function(str, size, character) {
            var result = '' + str;

            if(Object.prototype.toString.call(character) !== '[object String]'){
                character = ' ';
            }

            while (result.length < size) {
                result = character + result;
            }

            return result;
        },

        /**
         * 填補字符串右邊
         * @param   str        {String}  原字符串
         * @param   size       {Number}  填補後的長度
         * @param   character  {String}  填補的字符,如果不填則爲空字符' '
         * @return  返回填補後的字符串
         */
        rightPad: function(str, size, character) {
            var result = '' + str;

            if(Object.prototype.toString.call(character) !== '[object String]'){
                character = ' ';
            }

            while (result.length < size) {
                result += character;
            }

            return result;
        },

        /**
         * 把字符串中的html字符轉義
         * @param   str  {String}
         * @return  返回轉義後的字符
         */
        htmlEncode: function(str) {
            if(Object.prototype.toString.call(str) === '[object String]'){
                return str.replace(htmlEncodeRegex, function(match, val){
                    return htmlEncodeMap[val];
                });
            }else{
                return str;
            }
        },

        /**
         * 把字符串中的html字符解碼
         * @param   str  {String}
         * @return  返回解碼後的字符串
         */
        htmlDecode: function(str) {
            if(Object.prototype.toString.call(str) === '[object String]'){
                return str.replace(htmlDecodeRegex, function(match, val){
                    return htmlDecodeMap[val];
                });
            }else{
                return str;
            }
        }
    };
})();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章