首页 > 代码库 > 求中英文混合字符串长度,中英文混合字符串截取(汉字2个字节,字母数字等1个字节),字符转ASCII码
求中英文混合字符串长度,中英文混合字符串截取(汉字2个字节,字母数字等1个字节),字符转ASCII码
/// <summary> /// 求字符串的实际长度(汉字2个字节,外语字符1个字节) /// </summary> /// <param name="str"></param> /// <returns></returns> public static int Length(string str) { int len = 0; char[] arr = str.ToCharArray(); for (int i = 0; i < arr.Length; i++) { //汉字 if (Asc(arr[i].ToString()) == -1) len += 2; else len += 1; } return len; } /// <summary> /// 重写截取字符串方法,这里的长度是字节数(汉字2个字节,外语字符1个字节) /// </summary> /// <param name="str"></param> /// <param name="length">截取长度(这里的长度是字节数,汉字2个字节,外语字符1个字节)</param> /// <returns></returns> public string Substring(string str, int length) { int len = 0; char[] arr = str.ToCharArray(); string strReturn = string.Empty; //参数检查 if (length > Length(str)) length = Length(str); for (int i = 0; i < arr.Length; i++) { //汉字 if (Asc(arr[i].ToString()) == -1) len += 2; else len += 1; if (len > length) break; strReturn += arr[i].ToString(); } return strReturn; } /// <summary> /// 字符转ASCII码,如果未能转换为ASCII码返回-1 /// </summary> /// <param name="character"></param> /// <returns></returns> public static int Asc(string character) { if (character.Length == 1) { //因为汉字和?都被转换为63,所以?进行提前处理 if (character == "?") return 63; System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding(); int intAsciiCode = (int)asciiEncoding.GetBytes(character)[0]; //如果未能转换为ASCII码(暂且认为为汉字) if (intAsciiCode == 63) return -1; return (intAsciiCode); } else { throw new Exception("Character is not valid."); } } /// <summary> /// ASCII码转字符 /// </summary> /// <param name="asciiCode"></param> /// <returns></returns> public static string Chr(int asciiCode) { if (asciiCode >= 0 && asciiCode <= 255) { System.Text.ASCIIEncoding asciiEncoding = new System.Text.ASCIIEncoding(); byte[] byteArray = new byte[] { (byte)asciiCode }; string strCharacter = asciiEncoding.GetString(byteArray); return (strCharacter); } else { throw new Exception("ASCII Code is not valid."); } }关于ASCII码的转换参考:
http://blog.csdn.net/ldw701/archive/2006/06/01/767875.aspx
求中英文混合字符串长度,中英文混合字符串截取(汉字2个字节,字母数字等1个字节),字符转ASCII码
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。