关于截取字符串长度的问题!

yasire 2009-12-18 09:19:02
有的时候行的宽度有限,所以显示数据的时候,如果字符串太长就要截取一个固定的长度,然后在后面加上"..." .

现在的问题是,如果对所有的字符串都截取10个长度,string s = str.SubString(0,10);
如果str="一二三四五六七八九零一",截取处理后就显示为"一二三四五六七八九零...".
但是如果str="abcdefghijklmn",截取处理后显示为 "abcdefghij..."

英文字母的宽度明显要比全是汉字的小很多,我的意思同样的宽度里,如果全是英文的话可以显示的更多。

怎么才能做到,如果全是英文就显示20个 字符,如果全是汉字就显示10个字,如果是混合?
...全文
169 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dd__dd 2009-12-18
  • 打赏
  • 举报
回复
可以根据固定的像素截取的,以前用JQuery做过
liuyjcel 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yjcel1988 的回复:]
C# codepublicstaticstring CutString(string inputString,int len)
{
ASCIIEncoding ascii=new ASCIIEncoding();int tempLen=0;string tempString="";byte[] s= ascii.GetBytes(inputString);for (int ?-
[/Quote]

学习。。
Lovely_baby 2009-12-18
  • 打赏
  • 举报
回复
先将汉字转换为char型的
汉字是占两字字符的~~
.ToCharArray()
再使用str.SubString(0,10);
RHCL 2009-12-18
  • 打赏
  • 举报
回复

string s = "测试这是中文";
string a = "test";
int h = Encoding.Default.GetByteCount(s);
int y = Encoding.Default.GetByteCount(a);
yjcel1988 2009-12-18
  • 打赏
  • 举报
回复
    public static string CutString(string inputString, int len)
{
ASCIIEncoding ascii = new ASCIIEncoding();
int tempLen = 0;
string tempString = "";
byte[] s = ascii.GetBytes(inputString);
for (int i = 0; i < s.Length; i++)
{
if ((int)s[i] == 63)
{
tempLen += 2;
}
else
{
tempLen += 1;
}

try
{
tempString += inputString.Substring(i, 1);
}
catch
{
break;
}

if (tempLen > len)
break;
}
// //如果截过则加上半个省略号
// byte[] mybyte=System.Text.Encoding.Default.GetBytes(inputString);
// if(mybyte.Length>len)
// tempString+="…";
return tempString;
}
comzheng 2009-12-18
  • 打赏
  • 举报
回复
楼主如果字符串不是很多(达几百几千的),可以考虑用CSS来做。
如:
<div style="width:230px;overflow:hidden; white-space:nowrap;text-overflow:ellipsis;" title="<%#Eval("Address")%>"><%#Eval("Address")%></div>

多余的部份会以...来结束的
CopperBell 2009-12-18
  • 打赏
  • 举报
回复
转为char[]
if(char[i]==中文)
{

}
else
{

}
slimboy123 2009-12-18
  • 打赏
  • 举报
回复
up
nosuchtracter 2009-12-18
  • 打赏
  • 举报
回复
根据字节来截取
中文是2个字节
英文1个字节
heerxiong 2009-12-18
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
http://blog.csdn.net/xianfajushi/archive/2009/11/27/4734699.aspx目前我自己还觉得满意的,不过后来又改进了些,等又空重新发布一下

62,265

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧