strlen.js

import { toString } from 'ut2';
/**
 * 获取字符长度。中文汉字占2个字符,英文占1个字符,特殊如emoji占4个字符。
 *
 * @static
 * @alias module:Other.strlen
 * @since 4.10.0
 * @param {string} str 字符串
 * @returns {number} 字符长度
 * @example
 *
 * strlen('你好a'); // 5
 * strlen('你好,世界!'); // 12
 * strlen('严両丞丽'); // 8
 * strlen('abcde'); // 5
 * strlen('𠮷'); // 4
 * strlen('🍎'); // 4
 *
 */
function strlen(str) {
    const realStr = toString(str);
    let len = 0;
    for (let i = 0; i < realStr.length; i++) {
        const c = realStr.charCodeAt(i);
        if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {
            len++;
        }
        else {
            len += 2;
        }
    }
    return len;
}
export default strlen;