技术经验分享:c#拆分字符串英文和数字(包括国外所以文字)

简介: 技术经验分享:c#拆分字符串英文和数字(包括国外所以文字)

"

先创建一个类:

///

/// 字符串分析

///

interface IStringAna

{

///

/// key:文本包含的汉字或英文单词,value:汉字或英文单词出现的次数

///

///

/// //代码效果参考:https://v.youku.com/v_show/id_XNjQwNjg1MjE0MA==.html

key:文本包含的汉字或英文单词,value:汉字或英文单词出现的次数

Dictionary[span style=""color: rgba(0, 0, 255, 1)"">string, int

}

class StringAna : IStringAna

{

public Dictionary[span style=""color: rgba(0, 0, 255, 1)"">string, int

{

var words = new Listspan style=""color: rgba(0, 0, 255, 1)"">string</span;

var dict = new Dictionaryspan style=""color: rgba(0, 0, 255, 1)"">string, int</span;

byte【】 bts = Encoding.Unicode.GetBytes(text);

//foreach (var bt in bts)

//{

// //代码效果参考:https://v.youku.com/v_show/id_XNjQwMDM5NzIyMA==.html

Console.Write(string.Format(""{0} "",bt));

//}

//Console.WriteLine();

var pointer = 0;

var i = 0;

while (i <= bts.Length-2)

{

byte【】 tmp;

if (bts【i + 1】 == 0 && bts【i】 != 32)

{

pointer = i;

while (pointer + 2 < bts.Length && bts【pointer +2】 != 32 && bts【pointer + 2+1】 == 0)

{

pointer += 2;

}

var len = pointer+2 - i;

tmp = new byte【len】;

Array.Copy(bts, i, tmp, 0, len);

i = pointer+2;

}

else if (bts【i】 == 32 && bts【i + 1】 == 0)

{

i += 2;

continue;

}

else

{

tmp = new byte【】 { bts【i】, bts【i + 1】 };

i += 2;

}

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[span style=""color: rgba(0, 0, 255, 1)"">string,int

{

int value;

if(dict.TryGetValue(word,out value))

{

dict【word】 = value + 1;

}

else

{

dict【word】 = 1;

}

}

}

实现接口:

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}"");

}


"
image.png
相关文章
|
2月前
|
开发框架 .NET C#
C#|.net core 基础 - 删除字符串最后一个字符的七大类N种实现方式
【10月更文挑战第9天】在 C#/.NET Core 中,有多种方法可以删除字符串的最后一个字符,包括使用 `Substring` 方法、`Remove` 方法、`ToCharArray` 与 `Array.Copy`、`StringBuilder`、正则表达式、循环遍历字符数组以及使用 LINQ 的 `SkipLast` 方法。
|
3月前
|
开发框架 .NET 程序员
C# 去掉字符串最后一个字符的 4 种方法
在实际业务中,我们经常会遇到在循环中拼接字符串的场景,循环结束之后拼接得到的字符串的最后一个字符往往需要去掉,看看 C# 提供了哪4种方法可以高效去掉字符串的最后一个字符
333 0
|
24天前
|
人工智能 开发框架 前端开发
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
|
23天前
|
人工智能 开发框架 安全
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)
C#/.NET/.NET Core技术前沿周刊 | 第 13 期(2024年11.11-11.17)
|
3月前
|
SQL API 定位技术
基于C#使用winform技术的游戏平台的实现【C#课程设计】
本文介绍了基于C#使用WinForms技术开发的游戏平台项目,包括项目结构、运行截图、实现功能、部分代码说明、数据库设计和完整代码资源。项目涵盖了登录注册、个人信息修改、游戏商城列表查看、游戏管理、用户信息管理、数据分析等功能。代码示例包括ListView和ImageList的使用、图片上传、图表插件使用和SQL工具类封装,以及高德地图天气API的调用。
基于C#使用winform技术的游戏平台的实现【C#课程设计】
|
2月前
|
人工智能 开发框架 C#
C#/.NET/.NET Core技术前沿周刊 | 第 6 期(2024年9.16-9.22)
C#/.NET/.NET Core技术前沿周刊 | 第 6 期(2024年9.16-9.22)
|
2月前
|
人工智能 开发框架 Cloud Native
C#/.NET/.NET Core技术前沿周刊 | 第 9 期(2024年10.07-10.13)
C#/.NET/.NET Core技术前沿周刊 | 第 9 期(2024年10.07-10.13)
|
2月前
|
存储 安全 算法
C#一分钟浅谈:数据加密与解密技术
【10月更文挑战第3天】在数字化时代,信息安全至关重要。数据加密作为保障信息不被未授权访问的有效手段,通过特定算法将明文转换为密文,确保即使数据被截获也难以解读。本文从基础概念入手,介绍C#中实现数据加密的方法,涵盖对称加密(如AES、DES)与非对称加密(如RSA),并通过具体示例代码演示如何使用`System.Security.Cryptography.Aes`类完成AES加密和解密过程。此外,还强调了密钥管理及安全策略的重要性。
69 4
|
2月前
|
负载均衡 网络协议 C#
C#实现WebSocket实时消息推送技术详解
C#实现WebSocket实时消息推送技术详解
53 1
|
2月前
|
数据可视化 NoSQL C#
C#/.NET/.NET Core技术前沿周刊 | 第 8 期(2024年10.01-10.06)
C#/.NET/.NET Core技术前沿周刊 | 第 8 期(2024年10.01-10.06)