zoukankan      html  css  js  c++  java
  • 显示中英文混排截取字符串的两种方法

    方法一:用c#程序处理。

    附代码

    View Code
            /// <summary>
            /// 返回某字符串的混编长度
            /// </summary>
            /// <param name="sourceStr">源字符串</param>
            /// <returns></returns>
            public static int MixLength(this string sourceStr)
            {
                int mixLength = sourceStr.Length;
                for (int i = 0; i < sourceStr.Length; i++)
                {
                    byte[] bytes = Encoding.Default.GetBytes(sourceStr.Substring(i, 1));
                    if (bytes.Length > 1)
                    {
                        mixLength++;
                    }
                }
                return mixLength;
            }
    
            /// <summary>
            /// 截取相当于mixLength英文字符长度的中英文混合字符串
            /// </summary>
            /// <param name="sourceStr">源字符串</param>
            /// <param name="mixLength">要截取的长度,中文算两个长度单位</param>
            /// <returns></returns>
            public static string MixSubstring(this string sourceStr, int mixLength)
            {
                int length = mixLength;
                bool flag = false;//标记length是否减1
                int i = 0;
                while (i < length)
                {
                    if (flag)
                    {
                        length--;
                        flag = false;//重置
                    }
    
                    byte[] bytes = Encoding.Default.GetBytes(sourceStr.Substring(i, 1));
                    if (bytes.Length > 1)//是中文,则在下次减一
                    {
                        flag = true;
                    }
                    i++;
                }
                return sourceStr.Substring(0, length);
            } 

    缺点:在真正显示的界面上中文字符的长度并非英文字符的两倍。

    方法二:用css控制样式。

    如果是控制表格中td的内容显示省略,则首先给表格加样式 table-layout:fixed;

    然后给相应的td加上样式:

        .ellipsis
        {
            200px; //需要控制显示的长度
            white-space: nowrap;
            word-break: keep-all;
            overflow: hidden;
            text-overflow: ellipsis;
        }

    如果是span或者div,则直接应用该样式即可。

    缺点:不同浏览器之间有少许差别,但相比起第一种方法很精确。

  • 相关阅读:
    pureftpd无法上传、新建、覆盖文件的解决方法
    nginx 安装
    Generating Artifacts问题解决汇总
    Java Project和Web Project 区别
    CString 截取字符串全攻略
    截取字符串--sql和access的区别
    VC++线程函数内怎么调用外部函数
    CTime与CString相互转化
    CString的所有函数
    深层次的理解_variant_t
  • 原文地址:https://www.cnblogs.com/Benjamin/p/2844654.html
Copyright © 2011-2022 走看看