C#用正则表达式获取字符串中汉字的数量

目录

一、关于字符串和判断其组成常识

二、用正则表达式获取字符串中汉字的数量

1.字符是否为汉字的正则表达式

2.实例

3.生成结果

三、相关知识点

1.Regex.IsMatch 方法 


一、关于字符串和判断其组成常识

        字符串中可以包括数字、字母、汉字或者其他字符。使用Char类型的IsDigit静态方法可以判断字符串中的某个字符是否为数字,使用Char类型的IsLetter静态方法可以判断字符串中的某个字符是否为字母。

        使用正则表达式判断字符是否为汉字,进一步了解字符串是一组不可变的字符集的概念,可以使用索引访问字符串中的每一个字符。

        字符串对象的索引是只读的,只可以读取字符串对象中的字符,不可以根据索引更改字符串中的字符。

二、用正则表达式获取字符串中汉字的数量

1.字符是否为汉字的正则表达式

Regex regex = MyRegex();                //创建正则表达式对象,用于判断字符是否为汉字
[GeneratedRegex("^[\u4E00-\u9FA5]{0,}$")]
private static partial Regex MyRegex();

2.实例

// 用正则表达式获取字符串中汉字的个数
using System.Text.RegularExpressions;
namespace _044
{public partial class Form1 : Form{private GroupBox? groupBox1;private TextBox? textBox2;private TextBox? textBox1;private Button? button1;private Label? label2;private Label? label1;public Form1(){InitializeComponent();Load += Form1_Load;}private void Form1_Load(object? sender, EventArgs e){// // textBox2// textBox2 = new TextBox{Location = new Point(117, 48),Name = "textBox2",Size = new Size(133, 23),TabIndex = 4,};// // textBox1// textBox1 = new TextBox{Location = new Point(117, 18),Name = "textBox1",Size = new Size(162, 23),TabIndex = 3};// // button1// button1 = new Button{Location = new Point(17, 48),Name = "button1",Size = new Size(97, 23),TabIndex = 2,Text = "获取汉字数量",UseVisualStyleBackColor = true};button1.Click += Button1_Click;// // label2// label2 = new Label{AutoSize = true,Location = new Point(259, 50),Name = "label2",Size = new Size(20, 17),TabIndex = 1,Text = "个"};// // label1//         label1 = new Label{AutoSize = true,Location = new Point(17, 24),Name = "label1",Size = new Size(80, 17),TabIndex = 0,Text = "输入字符串:"};// // groupBox1//           groupBox1 = new GroupBox{Location = new Point(12, 12),Name = "groupBox1",Size = new Size(285, 77),TabIndex = 0,TabStop = false,Text = "获取汉字数量"};groupBox1.Controls.Add(textBox2);groupBox1.Controls.Add(textBox1);groupBox1.Controls.Add(button1);groupBox1.Controls.Add(label2);groupBox1.Controls.Add(label1);groupBox1.SuspendLayout();// // Form1// AutoScaleDimensions = new SizeF(7F, 17F);AutoScaleMode = AutoScaleMode.Font;ClientSize = new Size(309, 101);Controls.Add(groupBox1);Name = "Form1";StartPosition = FormStartPosition.CenterScreen;Text = "获取字符串中汉字的数量";         groupBox1.ResumeLayout(false);groupBox1.PerformLayout();}private void Button1_Click(object? sender, EventArgs e){int temp = 0;                                  //用于存储汉字数量Regex regex = MyRegex();                       //创建正则表达式对象,用于判断字符是否为汉字for (int i = 0; i < textBox1!.Text.Length; i++)//遍历字符串中每一个字符{temp = regex.IsMatch(textBox1.Text[i].     //如果字符是汉字则计数器加1ToString()) ? ++temp : temp;}textBox2!.Text = temp.ToString();              //显示汉字数量}[GeneratedRegex("^[\u4E00-\u9FA5]{0,}$")]private static partial Regex MyRegex();}
}

3.生成结果

 

三、相关知识点

1.Regex.IsMatch 方法 

         详见本文作者写的其他文章,C#中使用正则表达式实现汉字转拼音-CSDN博客  https://wenchm.blog.csdn.net/article/details/135374006

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/340528.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pyhon中File对象的属性及如何读取DBF文件

pyhon中File对象的属性 一个文件被打开后&#xff0c;你有一个file对象&#xff0c;你可以得到有关该文件的各种信息。 以下是和file对象相关的所有属性的列表&#xff1a; 如下实例&#xff1a; #!/usr/bin/python# 打开一个文件 fo open("foo.txt", "wb&quo…

HarmonyOS自定义组件生命周期函数介绍

aboutToAppear 在创建自定义组件的新实例后&#xff0c;在执行其build()函数之前执行。允许在aboutToAppear函数中改变状态变量&#xff0c;更改将在后续执行build()函数中生效。 aboutToDisappear 在自定义组件析构销毁之前执行。不允许在aboutToDisappear函数中改变状态变…

【K8S 存储卷】K8S的存储卷+PV/PVC

目录 一、K8S的存储卷 1、概念&#xff1a; 2、挂载的方式&#xff1a; 2.1、emptyDir&#xff1a; 2.2、hostPath&#xff1a; 2.3、NFS共享存储&#xff1a; 二、PV和PVC&#xff1a; 1、概念 2、请求方式 3、静态请求流程图&#xff1a; 4、PV和PVC的生命周期 5、…

scratch考试“画图”相关考点一网打尽

最近2023年12月17日举行的第15届蓝桥STEMA测评Scratch编程初/中级组编程第3题—六花阵图 在讲解这个题目,可以延申scratch所有的基础图形,学会这篇,碰到关于“图形”类题目基本上都可以搞定 六花阵图 编程实现: 六花阵图。 注意:六花阵图必须使用画笔绘制,画面中不允…

Vue 自定义仿word表单录入之日期输入组件

因项目需要&#xff0c;要实现仿word方式录入数据&#xff0c;要实现鼠标经过时才显示编辑组件&#xff0c;预览及离开后则显示具体的文字。 鼠标经过时显示 正常显示及离开时显示 组件代码 <template ><div class"paper-input flex flex-col border-box "…

从0开始python学习-47.pytest框架之解决Template替换无法进行二次处理的问题之热加载

问题&#xff1a;当参数为动态参数时&#xff0c;Template替换无法进行二次处理 解决方案&#xff1a;通过热加载来进行替换 热加载原理&#xff1a;在代码运行的过程中动态的调用python中的方法达到获得动态参数 可以进行热加载的情况&#xff1a;yaml文件&#xff0c;随机…

金和OA jc6 GetAttOut SQL注入漏洞复现

0x01 产品简介 金和OA协同办公管理系统软件(简称金和OA),本着简单、适用、高效的原则,贴合企事业单位的实际需求,实行通用化、标准化、智能化、人性化的产品设计,充分体现企事业单位规范管理、提高办公效率的核心思想,为用户提供一整套标准的办公自动化解决方案,以帮助…

原型模式

为什么要使用原型模式 不用重新初始化对象&#xff0c;而是动态地获得对象运行时的状态。适用于当创建对象的成本较高时&#xff0c;如需进行复杂的数据库操作或复杂计算才能获得初始数据。 优点是可以隐藏对象创建的细节&#xff0c;减少重复的初始化代码&#xff1b;可以在…

小程序基础学习(事件处理)

概述&#xff1a;点击某一个标题&#xff0c;使标题选中增加不同颜色。 <!--pages/four/four.wxml--> <navigation-bar title"牧原" back"{{false}}" color"black" background"#FFF"></navigation-bar> <view c…

Docker的介绍及安装基本操作命令

前言 Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。 容器是完全使用沙箱…

【每日一题】2696. 删除子串后的字符串最小长度-2024.1.10

题目&#xff1a; 2696. 删除子串后的字符串最小长度 给你一个仅由 大写 英文字符组成的字符串 s 。 你可以对此字符串执行一些操作&#xff0c;在每一步操作中&#xff0c;你可以从 s 中删除 任一个 "AB" 或 "CD" 子字符串。 通过执行操作&#xff0c…

NLP论文阅读记录 - wos | 01 使用深度学习对资源匮乏的语言进行抽象文本摘要

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作三.本文方法四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果4.6 细粒度分析 五 总结思考 前言 Abstractive text summarization of lowresourced languages usi…