c#拆分字符串英文和数字(包括国外所以文字)
先创建一个类:
/// <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#拆分字符串英文和数字(包括国外所以文字)的更多相关文章
- 写出将字符串中的数字转换为整型的方法,如:“as31d2v”->312,并写出相应的单元测试,正则去掉非数值、小数点及正负号外的字符串
写出将字符串中的数字转换为整型的方法,如:"as31d2v"->312,并写出相应的单元测试,输入超过int范围时提示不合法输入. public struct Convert ...
- JAVA 统计字符串中中文,英文,数字,空格的个数
面试题:输入一行字符,分别统计出其中英文字母.中文字符.空格.数字和其它字符的个数 可以根据各种字符在Unicode字符编码表中的区间来进行判断,如数字为'0'~'9'之间,英文字母为'a'~'z'或 ...
- C#、Java实现按字节截取字符串包含中文汉字和英文字符数字标点符号等
C#.Java实现按字节截取字符串,字符串中包含中文汉字和英文字符数字标点符号等. 在实际项目应用过程中,尤其是在web开发时可能遇到的比较多,就以我的(JiYF笨小孩管理系统)为例,再发布文章时候, ...
- JavaScript验证字符串只能包含数字或者英文字符的代码实例
验证字符串只能包含数字或者英文字符的代码实例:本章节分享一段代码实例,它实现了验证字符串内容是否只包含英文字符或者数字.代码实例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- 截取字符(pos,copy,Leftstr,MidStr,RightStr)以逗号为准把字符串拆分,判断字符串是否有数字、字母(大小写), 去掉字符串空格
1.copy(a,b,c) 举个例子: str := “123456”;str1 := Copy(Str,2,3);结果就是 str1 等于 234.Copy有3个参数,第一个是你要处理的字符串,第二 ...
- 在sqlserver中如何从字符串中提取数字,英文,中文,过滤重复字符
原文:在sqlserver中如何从字符串中提取数字,英文,中文,过滤重复字符 最近做项目的时候,经常用到一个字符串中的某些字符,处理起来非常的棘手,现在用下面的方法就可以很方便的从字符串中处理你想要的 ...
- iOS--判断字符串NSString中数字、中文、大小写英文
iOS--判断字符串NSString中数字.中文.大小写英文 <iframe id="iframeu2051914_0" src="http://pos.bai ...
- JAVA 统计字符串中中文,英文,数字,空格,特殊字符的个数
引言 可以根据各种字符在Unicode字符编码表中的区间来进行判断,如数字为'0'~'9'之间,英文字母为'a'~'z'或'A'~'Z'等,Java判断一个字符串是否有中文是利用Unicode编码来判 ...
- delphi 拆分字符串
最近在使用Delphi开发一种应用系统的集成开发环境.其中需要实现一个字符串拆分功能,方法基本原型应该是:procedure SplitString(src: string ; ch: Char; v ...
随机推荐
- stl(set和map)
http://codeforces.com/gym/101911/problem/A Recently Monocarp got a job. His working day lasts exactl ...
- opencv2——图像上的算术运算4
1.图像算术运算 参数含义: src1:第一张图像 src2:第二张图像 dst:destination,目标图像,需要提前分配空间,可省略 mask:掩膜 scale:缩放比,常量 dtype:数据 ...
- Qt 如何配置维护更新工具 MaintenanceTool ?
http://download.qt.io/static/mirrorlist/ 添加对应版本的地址,拉取最新元信息. http://mirrors.ustc.edu.cn/qtproject/onl ...
- Mysql命令收集【重要】
1.在linux上获取Mysql服务器状态,及版本: [root@host]# mysqladmin --version 结果信息: mysqladmin Ver 8.42 Distrib 5.7. ...
- C#设计模式:桥接模式(Bridge Pattern)
一,桥接模式,直接上代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; u ...
- VS code 生成html模板快捷键
第一步:在空html文档中输入 ! 第二步:按下tab键.
- Redis5.0集群搭建实战
安装环境: 6台 centos7.4 在各个节点下载官网release包,可以自己去官网找: wget http://download.redis.io/releases/redis-5.0.5.t ...
- 三 Bash Shell 结构
Bash Shell 程序结构主要有 : 变量设定 内置命令 Shell 语法结构 函数 其他命令行程序构成 例子: [root@localhost ~]# vim test.sh #!/bin/b ...
- VS基本教程
首先打开vs,点击工具栏,文件----新建----项目 然后依次选择Visual C++----空项目-----命名---项目存放路径 接下来在解决方案资源管理器中选中源文件,右键----添加---- ...
- 网络编程和并发:1.简述 OSI 七层协议
1. 概念 Open System Interconnection : 开放互联系统 2. 图示 注:图片来源:https://www.cnblogs.com/maybe2030/p/4781555. ...