技术经验分享: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
相关文章
|
9月前
|
人工智能 运维 算法
基于 C# 深度优先搜索算法的局域网集中管理软件技术剖析
现代化办公环境中,局域网集中管理软件是保障企业网络高效运行、实现资源合理分配以及强化信息安全管控的核心工具。此类软件需应对复杂的网络拓扑结构、海量的设备信息及多样化的用户操作,而数据结构与算法正是支撑其强大功能的基石。本文将深入剖析深度优先搜索(Depth-First Search,DFS)算法,并结合 C# 语言特性,详细阐述其在局域网集中管理软件中的应用与实现。
215 3
|
开发框架 .NET C#
C#|.net core 基础 - 删除字符串最后一个字符的七大类N种实现方式
【10月更文挑战第9天】在 C#/.NET Core 中,有多种方法可以删除字符串的最后一个字符,包括使用 `Substring` 方法、`Remove` 方法、`ToCharArray` 与 `Array.Copy`、`StringBuilder`、正则表达式、循环遍历字符数组以及使用 LINQ 的 `SkipLast` 方法。
420 8
|
10月前
|
缓存 监控 算法
基于 C# 网络套接字算法的局域网实时监控技术探究
在数字化办公与网络安全需求增长的背景下,局域网实时监控成为企业管理和安全防护的关键。本文介绍C#网络套接字算法在局域网实时监控中的应用,涵盖套接字创建、绑定监听、连接建立和数据传输等操作,并通过代码示例展示其实现方式。服务端和客户端通过套接字进行屏幕截图等数据的实时传输,保障网络稳定与信息安全。同时,文章探讨了算法的优缺点及优化方向,如异步编程、数据压缩与缓存、错误处理与重传机制,以提升系统性能。
259 2
|
9月前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
369 0
|
11月前
|
SQL Java 测试技术
C#字符串拼接的6种方式及其性能分析对比
在C#编程中字符串拼接是一种常见且基础的操作,广泛应用于各种场景,如动态生成SQL查询、构建日志信息、格式化用户显示内容等。然而,不同的字符串拼接方式在性能和内存使用上可能存在显著差异。今天咱们一起来看看在C#中字符串拼接的常见6种方式及其使用BenchmarkDotNet进行性能分析对比。
361 6
|
12月前
|
Web App开发 Linux C#
C# 网页截图全攻略:三种技术与 Chrome 路径查找指南
本文主要介绍了在 C# 中实现网页截图的几种技术及相关要点。涵盖了 PuppeteerSharp、Selenium 和 HtmlToImage 三种方式,分别阐述了它们的安装步骤及核心代码。同时,针对在 C# 中寻找 Windows 上 chrome.exe 路径这一问题,分析了未安装 Google Chrome 和已安装两种情况下的查找原因,并给出了相关参考链接,还列举了一系列与 C# 使用 Selenium、获取 chrome.exe 路径以及在 Linux 上部署相关的参考资料。
451 11
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
215 6
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
222 6
|
程序员 C# 数据库
C# 比较对象新思路,利用反射技术打造更灵活的比较工具
中途接手的项目,碰到需要在更新对象信息时比较并记录差异的需求,最变态的还有附加要求,怎么办?有没有既能满足需求又能对项目影响最小的方法呢?分享这个我封装的方法,一个利用反射技术打造的更灵活的比较工具
209 5
|
人工智能 开发框架 前端开发
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
C#/.NET/.NET Core技术前沿周刊 | 第 12 期(2024年11.01-11.10)
153 3