You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C# Visual Studio中实现文本内姓名/全名出现次数的统计功能

姓名全匹配统计解决方案

问题原因

现有代码的逻辑是仅将连续字母序列作为比对单元,遇到空格、标点等非字母字符就会清空当前缓存的字符串,因此永远无法生成包含空格的全名匹配串,自然无法统计带空格的全名出现次数。

修复方案

使用正则表达式实现精准全匹配,修复后代码如下:

using System;
using System.IO;
using System.Text.RegularExpressions;

namespace Harry
{
    class Program
    {
        static void Main(string[] args)
        {
            string input = Console.ReadLine()?.Trim() ?? string.Empty;
            if (string.IsNullOrEmpty(input)) 
            {
                Console.WriteLine("输入不能为空");
                return;
            }
            string text = File.ReadAllText("Harry Potter and the Sorcerer.txt");
            
            // 转义输入中的正则特殊字符,避免输入含特殊符号时匹配异常
            string escapedInput = Regex.Escape(input);
            // 匹配规则:姓名前后为非单词字符或文本首尾,避免部分匹配误判
            string pattern = $@"(?<!\w){escapedInput}(?!\w)";
            // 忽略大小写匹配,需要严格区分大小写可删除RegexOptions.IgnoreCase参数
            int count = Regex.Matches(text, pattern, RegexOptions.IgnoreCase).Count;
            
            Console.WriteLine($"{input}: {count} occurrences");
        }
    }
}

代码说明

  • 用File.ReadAllText简化了文本读取逻辑,等价于原有StreamReader读取全量文本的操作
  • Regex.Escape会自动转义输入中的正则特殊字符,避免输入包含.、*等符号时出现匹配异常
  • 前后的断言(?<!\w)和(?!\w)确保匹配内容的前后不是单词字符,避免把Harry Potterson这类内容误统计为Harry Potter的匹配项

内容的提问来源于stack exchange,提问作者Mical -

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 12:54:03