Discuz common.js代码注释(三)

/**
* 去除字符串左右两端的空格
*/
function trim(str) { 
    return (str + '').replace(/(\s+)$/g, '').replace(/^\s+/g, '');
}
/**
* 获取字符串长度(兼容IE:如果是IE,并且有换行符(\n)则替换为‘_’然后再计算长度)
*/
function strlen(str) { //获取字符串长度
    return (BROWSER.ie && str.indexOf('\n') != -1) ? str.replace(/\r?\n/g, '_').length : str.length;
}
/**
* 获取字符符串长度
*/
function mb_strlen(str) { 
    var len = 0; // 声明长度
    for (var i = 0; i < str.length; i++) { //遍历str参数
        len += str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255 ? (charset == 'utf-8' ? 3 : 2) : 1;//charCodeAt(i)>255是用来判断非常规字符的,如果是在 UTF-8编码下,一个汉字占3个字节,一个中文字符的占位是2个字节,英文字符是1个字节
    }
    return len; //返回字符串长度
}
/**
* 将超过指定的最大长度(maxlen)以外的文字显示为dot(‘...’)
*/
function mb_cutstr(str, maxlen, dot) { 
    var len = 0;  //声明长度
    var ret = ''; //声明返回值
    var dot = !dot ? '...' : dot;  //判断dot是否为空,如果为空dot默认为‘...’
    maxlen = maxlen - dot.length;  //获取最大长度和dot之间的长度值
    for (var i = 0; i < str.length; i++) {  //遍历目标字符str
        len += str.charCodeAt(i) < 0 || str.charCodeAt(i) > 255 ? (charset == 'utf-8' ? 3 : 2) : 1; //如果是在 UTF-8编码下,一个汉字占3个字节,一个中文字符的占位是2个字节,英文字符是1个字节
        if (len > maxlen) { //判断len是否大于最大长度
            ret += dot;  //如果大于最大长度则加上dot后跳出循环
            break;  //跳出循环
        }
        ret += str.substr(i, 1);   //每次获取一个字并拼接在ret后面
    }
    return ret;  //返回结果
}
/**
* 将str中匹配到search的值都替换为replace
* 如果search、replace都为数组,则可理解为多替换
* 如果 search:['1','2']、replace:['a','b']这样的值,那么会将1替换成a,将2替换成b,如果search的长度大于replace,则默认替换为replace的第一个值
* search:正则; replace:需要替换的值(可以为数组); str:查找源; regswitch:正则的修饰符(可取值:‘i’、‘g’、‘ig’等)
*/
function preg_replace(search, replace, str, regswitch) {
    var regswitch = !regswitch ? 'ig' : regswitch; //设置修饰符,如果regswitch为空则默认值:'ig'
    var len = search.length; //获取search长度
    for (var i = 0; i < len; i++) {  //遍历len
        re = new RegExp(search[i], regswitch);  //声明正则,并设置修饰符
        //将str中匹配到re的值替换为replace,如果replace为string类型,则直接替换,如果为数组,则替换为当前replace中对应的值
        str = str.replace(re, typeof replace == 'string' ? replace : (replace[i] ? replace[i] : replace[0]));
    }
    return str;//返回结果
}

 

posted @ 2015-03-01 22:35  you找到了  阅读(555)  评论(3编辑  收藏  举报