分割中文字符串(最终版,包含判断英文和数字)

2016-12-14 09:52:29来源:http://blog.csdn.net/haobn0612/article/details/1529558作者:haobn0612人点击

本文为
使用正则表达式判断英文字母或数字
使用正则表达式判断中文字符串
分割中文字符串(续)
分割中文字符串

这四篇文章的综合版本,是一个有关中文的实际项目的一部分。要求为将连续的中文字符串,按照以下两个原则分割:


每个中文字符后接一个空格; 每个英文单词或数后接一个空格; 其他符号保留,后接一个空格。

最后得到所需的中文字符串。该程序在VS2005中已经调试实现。


该部分需要使用以下代码,我将逐一讲解。


正则表达式部分有两个方法,分别作为判断中文或英文、数字的方法

RegexChinese方法,判断字符是否为中文#regionRegexChinese方法,判断字符是否为中文 //////Description:判断字符是否为中文//////待判断的字符///是中文的返回ture,否则返回falsepublicstaticboolRegexChinese(charc){if(Regex.IsMatch(c.ToString(),"^[一-龥]+$"))returntrue;elsereturnfalse;}#endregionRegexLetterOrDigit方法,判断是否为字母或数字#regionRegexLetterOrDigit方法,判断是否为字母或数字//////Description:判断字符是否为英文字母或数字//////待判断的字符///是字母或数字的返回ture,否则返回falsepublicstaticboolRegexLetterOrDigit(charc){if(Regex.IsMatch(c.ToString(),@"^[A-Za-z0-9]+$"))returntrue;elsereturnfalse;}#endregion

分割字符串用到以下方法:

BlankString方法,将原始字符串间加入空格#regionBlankString方法,将原始字符串间加入空格//////Discription:将原始字符串间加入空格,中文一个字符后一个空格///英文单词或数字整体后一个空格//////需要分割的字符串///已分割的字符串publicstringBlankString(stringoriString){//将原始字符串分割为逐个字符char[]tempChar=oriString.ToCharArray();//用于临时保存分割的字符,中文一个字符占一项,英文单词或数字整体占一项string[]tempString=newstring[tempChar.Length];//作为字符串数组的下标intnum=0;//记录数组的大小intsize=0;for(inti=0;i<tempChar.Length;i++){//若为汉字,则加入字符串数组中if(RegexChinese(tempChar[i]))tempString[num]=tempChar[i].ToString();//若为字母或数字,则将其合并为一个字符串,加入字符串数组中elseif(RegexLetterOrDigit(tempChar[i])) {tempString[i]=ConnectChar(tempChar,i);//跳过字母或数字的字符for(intj=i;j<tempChar.Length;j++){if(j<(tempChar.Length-1)&&RegexLetterOrDigit(tempChar[j+1]))continue;else{i=j;break;}}}//其他字符不变,加入字符串数组中,在以后的程序中处理elsetempString[num]=tempChar[i].ToString();num++;}//记录含有有效字符串的字符串数组的大小size=Array.IndexOf(tempString,null);if(size>0)//将数组重新设定大小Array.Resize(reftempString,size);returnString.Join("",tempString);}#endregionConnectChar方法,将连续的英文字母或数字连接为单词或数#regionConnectChar方法,将连续的英文字母或数字连接为单词或数//////Discription:将连续的英文字母或数字连接为单词或数//////未经处理的按字符分割的字符数组///英文单词或数的第一个字母或数字的索引///已连接的单词或数privatestringConnectChar(char[]oriCharArray,intcurrentNum){//保存英文单词或数字的数组string[]finalArray=newstring[oriCharArray.Length];//作为字符串数组的下标intnum=0;//记录数组的大小intsize=0;//检查是否包含连续字母或数字,将其保存在一起for(inti=currentNum;i<oriCharArray.Length;i++){finalArray[num]=oriCharArray[i].ToString();if(i<(oriCharArray.Length-1)&&RegexLetterOrDigit(oriCharArray[i+1])){num++;continue;}elsebreak;}//记录含有有效字符串的字符串数组的大小size=Array.IndexOf(finalArray,null);if(size>0)//将数组重新设定大小Array.Resize(reffinalArray,size);returnString.Join("",finalArray);}#endregion

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台