统计英文文本中的单词数并排序

幽灵船长酱 2024-08-30 ⋅ 18 阅读

在处理英文文本时,经常需要对文本中的单词进行统计和排序。C#作为一种强大的编程语言,可以帮助我们快速实现这个功能。接下来,我们将使用C#编写一个程序,用于统计给定英文文本中的单词数量,并按照出现频率对单词进行排序。

准备工作

在开始编写程序之前,我们需要准备以下工作:

  1. 安装 .NET Core SDK 并配置环境变量。
  2. 创建一个新的C#项目,可以使用Visual Studio或命令行工具。

编写代码

首先,我们需要创建一个WordCounter类,用于统计单词数量并排序。该类包含以下几个主要方法:

  1. CountWords(string text):该方法接收一个字符串参数text,并返回一个包含单词和频率的字典。
  2. SortWords(Dictionary<string, int> wordCount):该方法接收一个字典参数wordCount,并返回一个按照频率排序的单词列表。
using System;
using System.Collections.Generic;
using System.Linq;

public class WordCounter
{
    public Dictionary<string, int> CountWords(string text)
    {
        string[] words = text.Split(new char[] { ' ', '.', ',', ';', ':', '!', '?' }, StringSplitOptions.RemoveEmptyEntries);
        Dictionary<string, int> wordCount = new Dictionary<string, int>();

        foreach (string word in words)
        {
            if (wordCount.ContainsKey(word))
            {
                wordCount[word]++;
            }
            else
            {
                wordCount[word] = 1;
            }
        }

        return wordCount;
    }

    public List<string> SortWords(Dictionary<string, int> wordCount)
    {
        List<string> sortedWords = wordCount.Keys.ToList();
        sortedWords.Sort((word1, word2) => wordCount[word2].CompareTo(wordCount[word1]));

        return sortedWords;
    }
}

接下来,我们可以编写一个简单的控制台应用程序来测试这个类:

class Program
{
    static void Main(string[] args)
    {
        string text = "This is a sample text. It contains some words, including repeated words.";
        WordCounter wordCounter = new WordCounter();
        Dictionary<string, int> wordCount = wordCounter.CountWords(text);
        List<string> sortedWords = wordCounter.SortWords(wordCount);

        Console.WriteLine("Word Count:");
        foreach (var word in wordCount)
        {
            Console.WriteLine($"{word.Key}: {word.Value}");
        }

        Console.WriteLine("\nSorted Words:");
        foreach (var word in sortedWords)
        {
            Console.WriteLine(word);
        }
    }
}

运行结果

运行上述程序,我们将得到以下输出:

Word Count:
This: 1
is: 1
a: 1
sample: 1
text: 1
It: 1
contains: 1
some: 1
words: 2
including: 1
repeated: 1

Sorted Words:
words
This
is
a
sample
text
It
contains
some
including
repeated

结论

通过以上代码,我们成功地使用C#统计了给定英文文本中的单词数量,并按照频率排序。这对于文本处理和信息提取来说是非常实用的。

希望本文能帮助你理解如何在C#中实现统计单词数量和排序的功能。如果你有任何问题或建议,请随时留言。谢谢阅读!


全部评论: 0

    我有话说: