public static string GetFirstString(string stringToSub, int length)
{
Regex regex = new Regex("[\u4e00-\u9fa5]+", RegexOptions.Compiled);
char[] stringChar = stringToSub.ToCharArray();
StringBuilder sb = new StringBuilder();
int nLength = 0;
bool isCut=false;
for(int i = 0; i < stringChar.Length; i++)
{
if (regex.IsMatch((stringChar[i]).ToString()))
{
sb.Append(stringChar[i]);
nLength += 2;
}
else
{
sb.Append(stringChar[i]);
nLength = nLength + 1;
}
if (nLength > length)
{
isCut=true;
break;
}
}
if(isCut)
return sb.ToString()+"..";
else
return sb.ToString();
}
我是從網上找的方法,然後添加了,如果是超過長度,則在後面添加".."字符。
這在做網站時,顯示新聞標題最非常有用,為了保持頁面的格局,對標題進行限定長度,這就需要對中文進行雙字符計算。