先创建一个类:

 /// <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. CodeChef GCD2

    GCD2   Problem code: GCD2   Submit All Submissions   All submissions for this problem are available. ...

  2. window下 nginx 80端口被占用

    问题:启动nginx没有反应,查看日志提示 bind() to 0.0.0.0:80 failed (10013: An attempt was made to access a socket in ...

  3. 在html模板里面加python函数(simple_tag与filter)

    自定义函数 simple_tag a. app下创建templatetags目录 b. 任意xxoo.py文件 c. 创建template对象 register d. @register.simple ...

  4. Mac下安装nodejs,然后安装Vue-devtools工具

    一.安装nodejs 1.这一步简单,只要上官网下载下来,直接按照提示安装就可以,mac版本的安装方法很简单. 下载nodejs的官方网址是:  nodejs.org    ,浏览器输入就可以跳转到了 ...

  5. 没有找到mspdb80.dll,因此这个应用程序未能启动...问题解决

    这里主要针对使用link.exe进行SIG文件制作时,报错. 首先下载,mspdb80.dll:https://www.lanzous.com/i59dgfi 将dll文件移动到我的电脑(32位)C: ...

  6. JSON:结构化数据格式

    JSON是javascript的子类,也是作为更好的互联网传输结构化数据格式逐渐取代XML,因此要理解JSON,重要的是理解它是一种数据格式,不是一种编程语言. 语法 //javascript var ...

  7. (ACM模板)二元组pair

    #include<iostream> #include<cstdio> #include<utility> using namespace std; typedef ...

  8. HTML基础iframe 实现聚合浏览器

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  9. web安全—tomcat禁用WebDAV或者禁止不需要的 HTTP 方法

    现在主流的WEB服务器一般都支持WebDAV,使用WebDAV的方便性,呵呵,就不用多说了吧,用过VS.NET开发ASP.Net应用的朋友就应该 知道,新建/修改WEB项目,其实就是通过WebDAV+ ...

  10. hive的数据定义之创建数据库和表

    1.对数据库的操作 create database hive_db //创建数据库hive_db create table hive_db.test(字段内容及其格式省略) //在数据库hive_db ...