方法一:用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,则直接应用该样式即可。
缺点:不同浏览器之间有少许差别,但相比起第一种方法很精确。
View Code