C#统计字符串中中文汉字个数的实现方法

Noah
Noah
发布时间:2026-10-14 | 2人浏览过
原创

在C#应用程序中,经常需要处理包含多语言字符的字符串数据,并对特定类型的字符(如中文汉字)进行计数分析。利用正则表达式精准定位汉字的Unicode编码范围,配合简单的遍历逻辑,即可高效完成统计任务。本文将详细介绍如何在C#中编写一个可靠的函数来实现这一目标。

结果与目标

我们需要一个返回值为整数(int)的方法,输入为任意字符串,输出为该字符串中包含的中文字符总数。该方法需能正确处理纯文本、混合文本以及空字符串。

准备条件

  • 开发环境:Visual Studio 或支持 C# 编译器的 IDE。
  • 命名空间引用:确保项目已引入 System.Text.RegularExpressions,这是使用正则表达式的必要前提。

真实操作顺序

第1步:构建汉字判断的正则表达式

目的:定义用于识别单个汉字的规则。
原理:常见汉字的 Unicode 编码范围大致在 \u4E00 到 \u9FA5 之间。通过此范围可以过滤出绝大多数常用汉字。

// 定义正则表达式模式,匹配单个汉字
string pattern = @"^[\u4E00-\u9FA5]$";

注意:这里的正则表达式是针对单个字符设计的。在使用时需将目标字符转换为字符串进行匹配测试。

第2步:实现统计函数逻辑

入口:接收一个 string 类型的参数 str。
动作: 1. 初始化计数器 count 为 0。 2. 遍历字符串中的每一个字符(使用索引 i)。 3. 将当前字符 str[i] 转换为字符串对象(因为正则匹配通常针对字符串)。 4. 使用 Regex.IsMatch 方法判断该字符是否符合汉字正则。 5. 如果匹配成功(返回 true),计数器加 1。

using System.Text.RegularExpressions;

public static int GetHanNumFromString(string str)
{
    if (str == null) return 0;
    
    int count = 0;
    // 定义匹配单个汉字的正则表达式
    Regex regex = new Regex(@"^[\u4E00-\u9FA5]$");

    for (int i = 0; i < str.Length; i++)
    {
        // char 转为 string 以进行正则匹配
        if (regex.IsMatch(str[i].ToString()))
        {
            count++;
        }
    }

    return count;
}

重要参数:str.Length 决定了遍历次数;[\u4E00-\u9FA5] 是核心的汉字编码区间。

第3步:验证与调用

可观察的完成状态:函数返回正确的整数个数。例如,对于字符串 "Hello 你好 World 测试",函数应返回 4(对应“你”、“好”、“测”、“试”)。

string testStr = "Hello 你好 World 测试";
int hanCount = GetHanNumFromString(testStr);
Console.WriteLine($"汉字数量: {hanCount}"); // 输出: 汉字数量: 4

完成判断

当代码编译无错误,且对包含不同数量汉字的测试字符串运行后,返回值与预期一致,即表示实现成功。

简要总结

上述就是C#统计字符串里中文汉字个数的详细内容,更多关于C#汉字正则处理、字符串分析的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表