有的时候行的宽度有限,所以显示数据的时候,如果字符串太长就要截取一个固定的长度,然后在后面加上"..." . 现在的问题是,如果对所有的字符串都截取10个长度,string s = str.SubString(0,10);
如果str="一二三四五六七八九零一",截取处理后就显示为"一二三四五六七八九零...".
但是如果str="abcdefghijklmn",截取处理后显示为 "abcdefghij..."英文字母的宽度明显要比全是汉字的小很多,我的意思同样的宽度里,如果全是英文的话可以显示的更多。怎么才能做到,如果全是英文就显示20个 字符,如果全是汉字就显示10个字,如果是混合?
如果str="一二三四五六七八九零一",截取处理后就显示为"一二三四五六七八九零...".
但是如果str="abcdefghijklmn",截取处理后显示为 "abcdefghij..."英文字母的宽度明显要比全是汉字的小很多,我的意思同样的宽度里,如果全是英文的话可以显示的更多。怎么才能做到,如果全是英文就显示20个 字符,如果全是汉字就显示10个字,如果是混合?
if(char[i]==中文)
{
}
else
{
}
如:
<div style="width:230px;overflow:hidden; white-space:nowrap;text-overflow:ellipsis;" title="<%#Eval("Address")%>"><%#Eval("Address")%></div>多余的部份会以...来结束的
{
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;
}
string s = "测试这是中文";
string a = "test";
int h = Encoding.Default.GetByteCount(s);
int y = Encoding.Default.GetByteCount(a);
汉字是占两字字符的~~
.ToCharArray()
再使用str.SubString(0,10);