当前位置:编程学习 > C#/ASP.NET >>

C#.Net中对中英文混排的字符串按照指定长度截取排版?

如何按指定的长度截取成这个样子?

中华人民共和国aa1235 //13个字符
中华人民共和国山西太 //10个字符

用Substring截取后就不整齐了

中华人民共和国aa1 //10个字符
中华人民共和国山西太 //10个字符


--------------------编程问答-------------------- 有点晕。。。。。。。。 --------------------编程问答-------------------- 用C#截取指定长度的中英文混合字符串 改进版
http://www.cnblogs.com/yao/archive/2008/03/06/1093066.html --------------------编程问答-------------------- 有点晕 --------------------编程问答-------------------- 这个我也一直迷茫中。。。。。 --------------------编程问答-------------------- 我的做法宽度对比法,实现思路如下:

1、如果是汉字,我把它的长度指数定为 1。
2、如果是大写字母,我把它的长度指数定主 0。75
3、如果是小写字母,我把它的长度指数定为 0。5

这样我通过循环,将字符串的前N位进行长度指数换算,然后记下索引,截取再加上。。。
所谓的换算就是,按照上边规则,读到对应的范围的字符就累加相应的指数。

比如下边几个,换算后长度分别是:
中华人民共和国aa1235     //相当于10汉字长度,实际截取13个字符
中华人民共和国山西太     //相当于10汉字长度 --------------------编程问答-------------------- public static string GetSubString(string strText,int count)
        {
            double iCount=0;
            if (strText.Length <=count)
            {
                return strText;
            }
            else
            {
                Regex rg=new Regex("^[\u4e00-\u9fa5]{0,}$");

                int i = 0;
                foreach(char ch in strText)
                {
                    i++;
                    if(ch>=65 && ch<=90 )
                    {
                        iCount+=0.75;
                    }
                    if((ch>=0 &&ch<65)||(ch>90&&ch<=255))
                    {
                        iCount+=0.5;
                    }
                    if(rg.IsMatch(ch.ToString()))
                    {
                        iCount += 1;
                    }
                    if (iCount >= count)
                    {
                        break;
                    }
                }
                if (iCount >= count)
                {
                    return strText.Substring(0, i - 1) + "…";
                }
                else
                {
                    return strText;
                }
            }
        }

这是我一个学生写的,我原来的代码找不到了,仅供参考 --------------------编程问答-------------------- 还要考虑那些非法字符的 --------------------编程问答-------------------- 为什么一定要对其呢?

如果是B/s的
完全可以用CSS来实现


.text-overflow {
     display:block;/*inline对象需这个*/
width:100px;
word-break:keep-all;/* 不换行 */
white-space:nowrap;/* 不换行 */
overflow:hidden;/* 内容超出宽度时隐藏超出部分的内容 */
text-overflow:ellipsis;/* 当对象内文本溢出时显示省略标记(...) ;需与overflow:hidden;一 起使用。*/
} --------------------编程问答-------------------- 字符串运算速度很慢的~~~
能不用就不用字符串切割
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,