zoukankan      html  css  js  c++  java
  • 截取字符串,返回指定长度

    包含汉字、空格、特殊符号、英文等实际长度获取

    1.关于如何判断中英文双字符

    str.charCodeAt(index) 可以返回相应的位置的字符的Unicode编码(唯一码)

    判断方式一:
    if(str.charCodeAt(i) & 0xff00) != 0){//双字节}
    这种方式根据获取的Unicode编码与0xff00做‘与’运算,从而进行筛检;
    0xff00是 “1111 1111 0000 0000” 的十六进制表示法;
    单字节的Unicode编码的二进制最多只有八位,与操作后,结果一定是0

    判断方式二:
    根据1111 1111转换后等于255,可以得到只要大于255就可以
    if(str.charCodeAt(i) & 0xff00)>255){//双字节}

    2.获取长度

    /*
    *获取字符串实际占位长度(包含,汉字、英文、符号、空格等...)
    * @param {string} str
    * @return {number} len
    * */
    function getLength(str) {
        var len = 0;
        for(var i = 0;i<str.length;i++){
            /*charCodeAt(index),返回指定位置的字符的Unicode编码*/
            if (str.charCodeAt(i)>255){
                len+=2;
            }else{
                len++;
            }
        }
        return len;
    }
    
    //另外一种思路:通过将字符通过正则转换成单字符占位,统计单字符长度
    //str.replace(/[^x00-xff]/g,"ab").length
    

    3.获取指定长度子串

    /*
     * 按指定长度截取字符串(中文等占位2,英文等1)
     * @param {string,number} str,length (源字符串,截取长度)
     * @return {string} cutStr (截取后字符串)
     * */
    function getCutStr(str,length) {
        var cutStr = '',
            len = 0;
        for(var i=0;i<str.length;i++){
            console.log(i)
            if(str.charCodeAt(i)>255){
                len+=2;
                if (len==length || len==length-1){
                    cutStr = str.substring(0, i+1)
                    return cutStr + '...';
                }
            }else{
                len++;
                if (len==length){
                    cutStr = str.substring(0, i+1)
                    return cutStr + '...';
                }
            };
    
        }
        if (len<=length){
            return str;
        }
    }
    

    参考:http://www.cnblogs.com/zhujl/archive/2011/10/13/2210414.html

  • 相关阅读:
    函数传参-修改文本
    函数传参-商品计价
    嵌套选项卡自动播放
    仿淘宝自动播放菜单栏
    仿淘宝侧边栏菜单
    图片自动切换
    定时器应用-页面弹出广告
    转:Java面试题集(1-50)
    转:115个Java面试题和答案——终极列表(上)
    毕向东day01笔记--dos-jdk-jre-环境变量等
  • 原文地址:https://www.cnblogs.com/flora-dn/p/7562712.html
Copyright © 2011-2022 走看看