您的位置:首页 > 编程语言 > C#

向C#的String类添加按字节截取字符串的扩展方法

2013-02-28 10:29 357 查看
public static class StringExt

{

public static String bSubstring(this string s, int length)

{

byte[] bytes = System.Text.Encoding.Unicode.GetBytes(s);

int n = 0; //
表示当前的字节数

int i = 0; //
要截取的字节数

for (; i < bytes.GetLength(0) && n < length; i++)

{
// 偶数位置,如0、2、4等,为UCS2编码中两个字节的第一个字节

if (i % 2 == 0)

{

n++; //
在UCS2第一个字节时n加1

}

else

{
// 当UCS2编码的第二个字节大于0时,该UCS2字符为汉字,一个汉字算两个字节

if (bytes[i] > 0)

{

n++;

}

}

}
// 如果i为奇数时,处理成偶数
if (i % 2 == 1)

{

// 该UCS2字符是汉字时,去掉这个截一半的汉字
if (bytes[i] > 0)

i = i - 1;
// 该UCS2字符是字母或数字,则保留该字符

else

i = i + 1;

}

return System.Text.Encoding.Unicode.GetString(bytes, 0, i);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: