代码
using System.Text; namespace CSTest{ class StrOp { /// <summary> /// 得到字符串的长度,一个汉字算2个字符 /// </summary> /// <param name="str"> 字符串 </param> /// <returns> 返回字符串长度 </returns> public static int GetLength( string str) { if (str.Length == 0 ) return 0 ; ASCIIEncoding ascii = new ASCIIEncoding(); int tempLen = 0 ; byte [] s = ascii.GetBytes(str); for ( int i = 0 ; i < s.Length; i ++ ) { if (( int )s[i] == 63 ) { tempLen += 2 ; } else { tempLen += 1 ; } } return tempLen; } public static string CutString( string str, int len) { if (str.Length == 0 ) return str; ASCIIEncoding ascii = new ASCIIEncoding(); int tempLen = 0 ; byte [] s = ascii.GetBytes(str); for ( int i = 0 ; i < s.Length; i ++ ) { if (( int )s[i] == 63 ) { tempLen += 2 ; } else { tempLen += 1 ; } if (tempLen > len) { tempLen = i; break ; } } str = str.Substring( 0 , tempLen); return str; } }}
改写别人的方法,得到CutString,初步测试,满足要求
测试如下:
代码
using System; namespace CSTest{ class Program { static void Main( string [] args) { string strText = " 12wd中国人中國人 " ; Console.WriteLine( " 调用GetLength方法: " + StrOp.GetLength(strText)); Console.WriteLine(strText.Length); Console.WriteLine(StrOp.CutString(strText, 15 )); Console.ReadKey(); } }}
测试结果: