首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在c# visual studio中统计“姓名”和“姓氏”在文本中出现的次数

在c# visual studio中统计“姓名”和“姓氏”在文本中出现的次数
EN

Stack Overflow用户
提问于 2021-10-23 11:46:22
回答 2查看 94关注 0票数 0

我希望能够在C#中使用visual studio计算姓名和姓名。目前我只能在文本中搜索1个单词。我正在使用.NET 5.0 (当前版本)创建控制台应用程序。

(当输入为" Harry“时,它计算找到Harry的次数,当输入为"Harry Potter”时,即使文本中有多次出现的"Harry Potter“,它也始终计为0。)

我一直在谷歌上寻找答案,但只能找到如何计算1个单词。

下面是我当前的代码:

代码语言:javascript
复制
using System;
using System.IO;

namespace Harry
{
    class Program
    {
        static void Main(string[] args)
        {
            string input = Console.ReadLine();
            StreamReader stream = File.OpenText("Harry Potter and the Sorcerer.txt");
            string text = stream.ReadToEnd();

            string woord = "";
            int count = 0;

            foreach (var item in text)
            {
                if (Char.IsLetter(item))
                {
                    woord = woord + item;
                }
                else
                {
                    if(woord == input)
                    {
                        count++; 
                    }
                    woord = "";
                }
            }
            Console.Write(input + ": " + count + " occurrences");
        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-23 12:28:11

也许,与Auditive的建议一致:

代码语言:javascript
复制
int count = System.Text.RegularExpressions.Regex.Matches(text, input, RegexOptions.IgnoreCase).Count

如果您仍然很短,请更改输入,使其具有值harry\s+potter\s+表示“至少一个空格”,以防您的文本具有harrySPACESPACEpotter。(欢迎来到奇妙而神秘的正则表达式世界)

如果你仍然短小,我想你可能在文档中有拼写错误!?

--

如果你想算上哈利波特,你可以把你的正则表达式调整为harry|potter

--

解决这一挑战的其他方法还有,一个典型的方法是检查通过拆分得到的数组的长度:

代码语言:javascript
复制
int count = text.Split(input).Length - 1;

如果有5个哈利波特,你会得到一个6长的数组,因此是-1。不过,它可能会占用更多的资源;如果您追求的是尽可能低的CPU消耗,那么您可能会看到这样的情况:

代码语言:javascript
复制
int count=0;
for(int idx = text.IndexOf(input); idx > -1; count++, idx = text.IndexOf(input, idx+input.Length));

这将设置一个用于计数的变量,然后重复使用IndexOf,直到返回-1。每次在第一次之后,IndexOf都从上次找到的字符串的末尾开始。没有循环体,一切都发生在头中。

值得指出的是,这两种方法都不区分大小写,但可以通过更多的工作来实现

票数 3
EN

Stack Overflow用户

发布于 2021-10-23 11:59:00

您可以使用正则表达式和File.ReadLines("File.txt"),您可以在这里看到:count a specifc word in a text file in C#

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69687840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档