我需要计算从文件中读取的文本中每个单词出现的次数。问题是我必须逃避一些常见的符号并且我要做到这一点。所有这些都成功删除,除了问号"?"我仍然无法理解为什么会这样。我引用了代码。再次感谢。
namespace DictionariesHashTablesAndSets
{
using System;
using System.Collections.Generic;
using System.IO;
class WordsOccurencesInText
{
static void Main()
{
StreamReader reader = new StreamReader("../../text.txt");
string textFromFile = reader.ReadToEnd();
string[] words = SplitWords(textFromFile);
for (int index = 0; index <= words.Length - 1; index++)
{
words[index] = words[index].ToLower();
}
IDictionary<string, int> dict = new Dictionary<string, int>();
foreach (var word in words)
{
int count = 1;
if (dict.ContainsKey(word))
{
count = dict[word] + 1;
}
dict[word] = count;
}
Console.WriteLine(textFromFile);
foreach (var word in dict)
{
Console.WriteLine("{0} -> {1} times", word.Key, word.Value);
}
}
private static string[] SplitWords(string textFromFile)
{
char[] separators = new char[] { '.', ',', ' ', '?', '!', ';', '-' };
string[] words = textFromFile.Split(separators, StringSplitOptions.RemoveEmptyEntries);
return words;
}
}
}
输出:
just -> 1 times
some -> 1 times
random -> 3 times
text -> 11 times
over -> 1 times
here -> 1 times
and -> 1 times
more -> 1 times
this -> 3 times
is -> 2 times
the -> 2 times
? -> 1 times
文本文件示例:
这里有一些随机文本,TEXT,文本和更随机的随机文本文本?这是TEXT。文字,文字,文字这篇文章!这是文本吗?
答案 0 :(得分:3)
控制台写了?
,因为它是一个无法显示的角色。该字符位于这些部分之间的文件中:
just Some random text over Here, TEXT, text, and more random - random text Text? This is the TEXT. Text, text, text
THIS TEXT! Is this the text?
你在开始时看到了空间吗?它不是普通的空间,也不是第一部分的空间。但是它的ASCII值是150.(普通空间的ASCII值是32)
如果删除?
将消失的这个特殊空间。
如果你想检查一下这个测试:
just Some random text over Here, TEXT, text, and more random - random text Text? This is the TEXT. Text, text, text THIS TEXT! Is this the text?