近日在工作中正好遇见了判断是否为中文字符的问题,把代码写上来,方便记忆
using System;using System.Text.RegularExpressions;namespace StrTest{ class Program { static void Main(string[] args) { int strLength = 0; //半角 string testStr = "这是TEST"; strLength = GetStrLength(testStr); Console.WriteLine("str:{0},len:{1}", testStr, strLength); //全角 testStr = "TEST全角"; strLength = GetStrLength(testStr); Console.WriteLine("str:{0},len:{1}", testStr, strLength); Console.Read(); } ////// 获取实际占用长度 /// /// 字符串 ///真实长度 static int GetStrLength(string str) { int strLength = 0; //中文字符正则 Regex rx = new Regex("^[\u4e00-\u9fa5]$"); //全角字符正则 Regex rx1 = new Regex("^[\uFF00-\uFFFF]$"); for (int i = 0; i < str.Length; i++) { if (rx.IsMatch(str[i].ToString()) || rx1.IsMatch(str[i].ToString())) { //如果为中文字符或全角字符,字符串长度加2 strLength += 2; } else { //否则加1 strLength += 1; } } return strLength; } }}
以下这是结果:
这段代码只适用于中文字符和英文字符以及半角字符同时存在的情况,其他文字的情况并未进行测试