亲爱的朋友们,你好。我不知道这个代码中发生了什么。我试图实现一个字典来计算一个单词弹出的实例,而不管是否大写。它一直显示" 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次
答案 0 :(得分:0)
如果我猜测,我说你的文件包含一个换行符(LF或CRLF),它被正则表达式替换(只允许使用字母和空格)。
例如,如果文件内容是:
This
is the text.
此和 之间的换行符将被移除,为您留下以下文字:
Thisis the text.
如果是这种情况,您可能希望使用"[^a-zA-Z0-9 \r\n]"
作为替换模式。