C# 区分全/半角截取子字符串
在 做网站的时候,为了避免字符串过长而出现换行的现象.往往要截取一段子串来显示.但C#里不论你的字符是全角还是半角.C#都认为它是一个字符.这样的 话.如果我们的字符串里有字母也有汉字,往往使我们截取的字符串过短.在页面上显示时就很不美观.因此本人写下如下两个函数....问题解决了.
public static string GetSubString(string value, int Len)
{
if (value.Length < Len)
return value;
int halfwordcount = 0;
for (int i = 0; i < Len; i++)
{
if (CheckHalfWord(value[i].ToString()))
{
halfwordcount++;
}
}
if (halfwordcount == 0)
{
return value.Substring(0, Len)+"...";
}
else
{
//Len += halfwordcount / 2;
//if (value.Length > Len)
// return value.Substring(0, Len) + "...";
//else return value;
if (value.Length > Len + halfwordcount / 2)
return value.Substring(0, Len) + GetSubString(value.Substring(Len), halfwordcount / 2) ;
else
return value;
}
}
private static bool CheckHalfWord(string value)
{
if (1 == System.Text.Encoding.Default.GetByteCount(value))
{
return true;
}
else
{
return false;
}
}