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

news/2024/6/18 0:43:37 标签: 正则表达式

目录

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

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

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].     //如果字符是汉字则计数器加1
                    ToString()) ? ++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.niftyadmin.cn/n/5331695.html

相关文章

docker使用nginx部署vue刷新页面404

docker使用nginx部署vue刷新页面404 从docker内部复制出来的配置文件是这样的&#xff0c;但是刷新页面之后就显示404&#xff0c;关键是我两个前端项目都是用的这一个配置文件&#xff0c;但是只有一个项目出现刷新浏览器显示404的问题&#xff0c;这给我搞懵了&#xff01;&…

XXL-Job的搭建接入Springboot项目(详细)

一、XXL-Job介绍 XXL-Job 是一款开源的分布式任务调度平台&#xff0c;由 Xuxueli&#xff08;徐雪里&#xff09;开发。它基于 Java 技术栈&#xff0c;提供了一套简单易用、高可靠性的任务调度解决方案。 XXL-Job 的主要作用是帮助开发者实现定时任务的调度和执行。它可以用…

qemu、virt-manager克隆虚拟机

前提 必须先关闭虚拟机&#xff0c;不然克隆按钮是灰的&#xff0c;不能点击 克隆虚拟机 选择虚拟机--克隆 点击克隆 等待完成克隆 下图说明已经克隆成功 运行虚拟机

【应用方案】基于MT7628 JN5169 和SUN724的4G-Zigbee智能网关方案

产品方案特性 - 4G-Zigbee智能网关扩展性强&#xff1b; - 百兆以太网接入&#xff1b; - 支持Zigbee 3.0智能家居产品和智能安防产品接入&#xff1b; - 实时检测烟感、气感&#xff0c;联动阀门控制器可自动关闭燃气阀门&#xff0c;并拨打报警电话&#xff0c;防止火灾&…

软件开发架构

【 一 】软件开发架构图 【 1】ATM和选课系统 三层的开发架构 前段展示台 后端逻辑层 数据处理层 【二】软件开发架构的步骤流程 需求分析&#xff1a;在软件开发架构设计之前&#xff0c;需要对应用系统进行需求分析&#xff0c;明确用户需求、功能模块、业务流程等内容。…

Angular系列教程之父子组件通信详解

文章目录 前言组件通信方法1. 输入属性&#xff08;Input Properties&#xff09;2. 输出属性&#xff08;Output Properties&#xff09;3. 服务&#xff08;Services&#xff09;4. ViewChild与ContentChild 示例代码说明结论 前言 在Angular应用程序开发中&#xff0c;父子…

【Docker基础五】Dockerfile指令

Dockerfile 是一个文本文件&#xff0c;它包含了一系列的指令和参数&#xff0c;用来自动化构建 Docker 镜像的过程。每一个指令通常都会创建镜像的一层。下面是一些常用的 Dockerfile 指令。 1、FROM 语法&#xff1a;FROM <image>[:<tag>] [AS <name>]用…

linux-nfc neard 编译与安装

项目github地址&#xff1a; https://github.com/linux-nfc/neard git clone地址&#xff1a; https://github.com/linux-nfc/neard.git clone完源码切换到目录neard里。这个项目需要依赖一下库&#xff1a; - GCC compiler - D-Bus library - GLib library - Netlink (lib…