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