先创建一个类:

 /// <summary>
/// 字符串分析
/// </summary>
interface IStringAna
{
/// <summary>
/// key:文本包含的汉字或英文单词,value:汉字或英文单词出现的次数
/// </summary>
/// <param name="text"></param>
/// <returns>key:文本包含的汉字或英文单词,value:汉字或英文单词出现的次数</returns>
Dictionary<string, int> Ana(string text);
} class StringAna : IStringAna
{
public Dictionary<string, int> Ana(string text)
{
var words = new List<string>();
var dict = new Dictionary<string, int>();
byte[] bts = Encoding.Unicode.GetBytes(text);
//foreach (var bt in bts)
//{
// Console.Write(string.Format("{0} ",bt));
//}
//Console.WriteLine();
var pointer = ;
var i = ;
while (i <= bts.Length-)
{
byte[] tmp; if (bts[i + ] == && bts[i] != )
{
pointer = i;
while (pointer + < bts.Length && bts[pointer +] != && bts[pointer + +] == )
{
pointer += ;
}
var len = pointer+ - i;
tmp = new byte[len];
Array.Copy(bts, i, tmp, , len);
i = pointer+;
}
else if (bts[i] == && bts[i + ] == )
{
i += ;
continue;
}
else
{
tmp = new byte[] { bts[i], bts[i + ] };
i += ;
}
var word = Bytes2Word(tmp);
words.Add(word);
Put(dict, Bytes2Word(tmp));
}
return dict;
} string Bytes2Word(byte[] bytes)
{
return Encoding.Unicode.GetString(bytes);
} void Put(Dictionary<string,int> dict,string word)
{
int value;
if(dict.TryGetValue(word,out value))
{
dict[word] = value + ;
}
else
{
dict[word] = ;
} }
}

实现接口:

     var text = GetTestText();//生成测试文本
Console.WriteLine(text);
IStringAna ana = new StringAna();
var sp = Stopwatch.StartNew();
var rlt = ana.Ana(text);
Console.WriteLine($"Elapsed:{sp.ElapsedTicks}");
if (rlt == null)
{
Console.WriteLine("error");
}
else
{
foreach(var item in rlt)
{
Console.WriteLine($"{item.Key}:{item.Value}");
}

c#拆分字符串英文和数字(包括国外所以文字)的更多相关文章

  1. 写出将字符串中的数字转换为整型的方法,如:“as31d2v”->312,并写出相应的单元测试,正则去掉非数值、小数点及正负号外的字符串

    写出将字符串中的数字转换为整型的方法,如:"as31d2v"->312,并写出相应的单元测试,输入超过int范围时提示不合法输入. public struct Convert ...

  2. JAVA 统计字符串中中文,英文,数字,空格的个数

    面试题:输入一行字符,分别统计出其中英文字母.中文字符.空格.数字和其它字符的个数 可以根据各种字符在Unicode字符编码表中的区间来进行判断,如数字为'0'~'9'之间,英文字母为'a'~'z'或 ...

  3. C#、Java实现按字节截取字符串包含中文汉字和英文字符数字标点符号等

    C#.Java实现按字节截取字符串,字符串中包含中文汉字和英文字符数字标点符号等. 在实际项目应用过程中,尤其是在web开发时可能遇到的比较多,就以我的(JiYF笨小孩管理系统)为例,再发布文章时候, ...

  4. JavaScript验证字符串只能包含数字或者英文字符的代码实例

    验证字符串只能包含数字或者英文字符的代码实例:本章节分享一段代码实例,它实现了验证字符串内容是否只包含英文字符或者数字.代码实例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  5. 截取字符(pos,copy,Leftstr,MidStr,RightStr)以逗号为准把字符串拆分,判断字符串是否有数字、字母(大小写), 去掉字符串空格

    1.copy(a,b,c) 举个例子: str := “123456”;str1 := Copy(Str,2,3);结果就是 str1 等于 234.Copy有3个参数,第一个是你要处理的字符串,第二 ...

  6. 在sqlserver中如何从字符串中提取数字,英文,中文,过滤重复字符

    原文:在sqlserver中如何从字符串中提取数字,英文,中文,过滤重复字符 最近做项目的时候,经常用到一个字符串中的某些字符,处理起来非常的棘手,现在用下面的方法就可以很方便的从字符串中处理你想要的 ...

  7. iOS--判断字符串NSString中数字、中文、大小写英文

    iOS--判断字符串NSString中数字.中文.大小写英文   <iframe id="iframeu2051914_0" src="http://pos.bai ...

  8. JAVA 统计字符串中中文,英文,数字,空格,特殊字符的个数

    引言 可以根据各种字符在Unicode字符编码表中的区间来进行判断,如数字为'0'~'9'之间,英文字母为'a'~'z'或'A'~'Z'等,Java判断一个字符串是否有中文是利用Unicode编码来判 ...

  9. delphi 拆分字符串

    最近在使用Delphi开发一种应用系统的集成开发环境.其中需要实现一个字符串拆分功能,方法基本原型应该是:procedure SplitString(src: string ; ch: Char; v ...

随机推荐

  1. Using Keyboard Navigation

    http://technet.microsoft.com/en-us/library/cc939835.aspx

  2. iviewUI框架,使用table表格内render下拉框select被遮盖问题

    使用props:{  transfer:true },即可   1.原本代码:

  3. css文本内容大于内本显示框设置其显示方式

    1. <style type="text/css"> .text-ellipsis{ overflow: hidden;//隐藏滚动条 white-space: now ...

  4. python数字图像处理(三)边缘检测常用算子

    在该文将介绍基本的几种应用于边缘检测的滤波器,首先我们读入saber用来做为示例的图像 #读入图像代码,在此之前应当引入必要的opencv matplotlib numpy saber = cv2.i ...

  5. nuxtJs - axios 的 IE 兼容性的问题

    因为考虑SEO, 所以采用nuxt.js进行服务端渲染, 用熟了vue, nuxt无缝对接简直不要太爽 烦人的需求又来了, 要兼容IE ~~ 兼容处理 无非就是babel 将高级语法转成弱智IE看得懂 ...

  6. html5 带声音的导航

    代码实例: <!DOCTYPE html PUBLIC "-//W3C//DTDXHTML 1.0 Transitional//EN""http://www.w3. ...

  7. bzoj4182 Shopping 点分治+单调队列优化多重背包

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4182 题解 有一个很直观的想法是设 \(dp[x][i]\) 表示在以 \(x\) 为根的子树 ...

  8. Python中使用"subplot"在一张画布上显示多张图

    subplot(arg1, arg2, arg3) arg1: 在垂直方向同时画几张图 arg2: 在水平方向同时画几张图 arg3: 当前命令修改的是第几张图 t = np.arange(0,5,0 ...

  9. java 根据excel模板导出文件

    <!--读取excel文件,配置POI框架的依赖--> <dependency> <groupId>org.apache.poi</groupId> & ...

  10. C# json对象中包含数组对象时,如何存入数据库

    前端创建的的对象例如: C#端这样将数组提取出来存入