需要按GB(每汉字两字符,数字等一字符)的一定长度来截取字符串
需要按GB(每汉字两字符,数字等一字符)的一定长度来截取字符串
可是C#是按每汉字一字符计算的啊,头痛。
用到的字符串经常是汉字、数字、英文字母混合的。
比如:a中d12文cd,要取6位字符长,用Substring(0,6)取的长度字符不合要求。
怎么办?
[解决办法]
Text = Encoding.Default.GetString( Encoding.Default.GetBytes("a中d12文cd"), 0, 6); //a中d12
[解决办法]
// 把一个“unicode字符串”格式化为全角字符占2个位置的“普通字符串” // width<0 表示左对齐,右边填空格 // width>0 表示右对齐,左边填空格 public static string StrFormat(string s, int width) { Encoding code = Encoding.Default; byte [] bs = code.GetBytes(s); bool leftAlign = (width < 0 ? true : false); if (width < 0) width = - width; if (bs.Length >= width) return s; if (leftAlign) return s.PadRight(width-bs.Length+s.Length); return s.PadLeft(width-bs.Length+s.Length); }