/// <summary> /// 截取等寬中英文字符串 /// </summary> /// <param name="str">要截取的字符串</param> /// <param name="length">要截取的中文字符長度</param> /// <param name="appendStr">截取后后追加的字符串</param> /// <returns>截取后的字符串</returns> public static string CutStr(object str, int length, string appendStr) { if (str == null) return string.Empty; int len = length * 2; //aequilateLength為中英文等寬長度,cutLength為要截取的字符串長度 int aequilateLength = 0, cutLength = 0; Encoding encoding = Encoding.GetEncoding("gb2312"); string cutStr = str.ToString(); int strLength = cutStr.Length; byte[] bytes; for (int i = 0; i < strLength; i++) { bytes = encoding.GetBytes(cutStr.Substring(i, 1)); if (bytes.Length == 2)//不是英文 aequilateLength += 2; else aequilateLength++; if (aequilateLength <= len) cutLength += 1; if (aequilateLength > len) return cutStr.Substring(0, cutLength) + appendStr; } return cutStr; }
網頁中要實現中英文長度一致,還需要設置等寬字體,不然截取的寬度也不准確.
body
{
font-size: 9pt;
font-family:'宋體','新宋體'; /*等寬字體*/
}