使用字典难以回答自学功课

时间:2016-10-04 11:52:02

标签: c#

亲爱的朋友们,你好。我不知道这个代码中发生了什么。我试图实现一个字典来计算一个单词弹出的实例,而不管是否大写。它一直显示" isthis" ,我不知道它的来源。我如何纠正这个问题?

问题是这样的

  

编写一个程序,计算给定每个单词的次数   文本文件words.txt出现在其中。结果词应该按顺序排列   他们在文本中出现的次数。

这是代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Text.RegularExpressions;

namespace Chapter_18_Question_3
{
    class Program
{
    static void Main(string[] args)
    {
        const string path = "words.txt";
        string line;
        using (var reader = new StreamReader(path))
        {
             line = reader.ReadToEnd();
        }

        string text = line.ToLower();
        string tmp = Regex.Replace(text, "[^a-zA-Z0-9 ]", "");
        string[] newText = tmp.Split(' '); 

        var table = new SortedDictionary<string, int>();
        foreach(var item in newText)
        {
            if(!table.ContainsKey(item))
            {
                table.Add(item, 1);
            }

            else
            {
                table[item] += 1;
            }
        }
        foreach (var item in table)
        {
            Console.WriteLine("The word {0} appeared {1} times",
                item.Key, item.Value);
        }

    }
}

我的文字是:

&#34;这是TEXT。文字,文字,文字 - 本文!这是文本吗?&#34;

输出就是这个

  

这个词出现了1次

     

这个词出现了1次

     

这个词出现了1次

     

单词文字出现了6次

     

这个词出现了2次

     

这个词出现了2次

1 个答案:

答案 0 :(得分:0)

如果我猜测,我说你的文件包含一个换行符(LF或CRLF),它被正则表达式替换(只允许使用字母和空格)。

例如,如果文件内容是:

This
is the text.

之间的换行符将被移除,为您留下以下文字:

Thisis the text.

如果是这种情况,您可能希望使用"[^a-zA-Z0-9 \r\n]"作为替换模式。