• 字符串截取


    今天项目要求做一个小的功能点:实现字符串截取,要求在指定宽度中截取字符,这样就会出现一个字符被截取一半的情况。

    开始时候想使用CSS样式去做很简单:

        100px;  //元素宽度
        white-space:nowrap; //不换行 
        overflow:hidden;  //内容超出宽度时隐藏超出部分的内容
        text-overflow:ellipsis;        /*  当对象内文本溢出时显示省略标记(...) ;需与overflow:hidden;一起使用。 */  
        display:block;/*内联对象需加*/
    

      但是如果是截取多余的字符用(...)来表示是可以的,现在的需求是把多余的部分去除,那CSS就不好实现了(目前我还不知道如何实现)

    那就要想别的办法了,真正的画面设计或者说数据处理也就分为样式,js,还有我们用的编码语言(我所学的C#),现在样式不能解决问题,那就想想后面的方法。

    这后面两个主要是编码,那就要想想实现字符串截取的逻辑

    1.取得要截取的字符串

    2.循环拆分【要截取的字符串】重新组合,并【查看组合字符串宽度】是否在指定宽度

    2.1.没有超出指定宽度就继续循环拆分【要截取的字符串】重新组合

    2.2.超出指定指定宽度不做处理或者退出循环

    用C#处理比较麻烦且要用到

    Graphics 对象的MeasureString方法并且这个方法的参数要设置具体的字符串的字体属性

    string   str;   
    str   =   @"一二三 /dff5 4-,. < >";   
    Font   f   =   new   Font( "宋体 ",   12);     //字体不同,测量的宽度不同 
    Graphics   g   =   this.CreateGraphics();   //this=>Page/控件ID
    SizeF   siF   =   g.MeasureString(str,   f);   
    MessageBox.Show(siF.Width);   
    MessageBox.Show(siF.Height);
    

      开发时不一定能很准确的知道自己的项目的所使用的字体,所以果断放弃了。

    那现在就剩下Js的方法了:

    1.js获取宽度--js通过页面上的HTML标签的属性获取此标签的宽度。

    那我们就可以通过此方法实现了:

    1.创建一个div标签:主要用于存储字符串获取宽度

    <div class="content" id="dvCompute" style="position:absolute;visibility:hidden;"></div>
    

    2.js代码实现

                if (lblLoginUserName != null) {
                    var dvCompute = document.getElementById("dvCompute");
                    var l_strLoginName = lblLoginUserName.innerText;//要截取的字符串,我放在另一个标签内
                    var l_strResult = "";
                    for (var i = 0; i < l_strLoginName.length; i++) {
                        l_strResult += l_strLoginName[i];
                        dvCompute.innerHTML = l_strResult;
                        if (dvCompute.offsetWidth > 180) {
                            break;
                        }
                    }
                }
    

      

  • 相关阅读:
    HDU-1421 搬寝室(递推,DP,数学)2017寒假集训
    HDU-2577 How to Type(递推,DP)(水)2017寒假集训
    POJ-1088 滑雪(DP,二维LIS,记忆化)2017寒假集训
    CSUST-17级集训队选拔赛解题报告
    (十六)服务化:微服务架构,必须搞定高可用!
    (十五)服务化:微服务架构,粒度多少合适?
    (十四)服务化:微服务架构,究竟解决什么问题?
    (十三)本章小结:百万流量,这些技术够用了
    (十二)性能优化:读写分离,前台与后台分离
    (十一)性能优化:动静分离,互联网优化利器?
  • 原文地址:https://www.cnblogs.com/WarBlog/p/5818816.html
Copyright © 2020-2023  润新知