c# 计算字符串长度及截取字符串{asp.net}
C# 计算字符串长度 截取中英文混合的字符串:
把文章标题列表显示在网站首页,经常会碰到要截取标题字符串的情况。c#中字符串的length属性默认是按unicode编码来计算字符的,即不管是中文字符,还是英文字符,统统按一个单位来计算,substring也是同样的情形。
问题来来:如果是单纯一种字符那么好办,可以得到你想要的结果,但如果是中英文混合的,就有些问题了,字符串的实际占用长度变得不可预测,因为中文字符的长度占用是英文字符的2倍。
下面是用以代替substring方法的方法:
代码如下
-
//限制字符数
-
public static string Fix(string s, int len)
-
{
-
string result = ""; //最终返回的结果
-
int byteLen = System.Text.Encoding.Default.GetByteCount(s); //单字节字符长度
-
int charLen = s.Length; //把字符平等对待时的字符串长度
-
int byteCount = 0; //记录读取进度{中文按两单位计算}
-
int pos = 0; //记录截取位置{中文按两单位计算}
-
if (byteLen > len)
-
{
-
for (int i = 0; i < charLen; i++)
-
{
-
if (Convert.ToInt32(s.ToCharArray()[