【发布时间】:2015-07-27 00:49:21
【问题描述】:
我正在阅读文档,并拆分单词以获取字典中的每个单词,但是我如何排除某些单词(例如“the/a/an”)。
这是我的功能:
private void Splitter(string[] file)
{
try
{
tempDict = file
.SelectMany(i => File.ReadAllLines(i)
.SelectMany(line => line.Split(new[] { ' ', ',', '.', '?', '!', }, StringSplitOptions.RemoveEmptyEntries))
.AsParallel()
.Distinct())
.GroupBy(word => word)
.ToDictionary(g => g.Key, g => g.Count());
}
catch (Exception ex)
{
Ex(ex);
}
}
另外,在这种情况下,添加.ToLower() 调用以使文件中的所有单词都变为小写的正确位置在哪里?我在 (temp = file..) 之前就在考虑这样的事情:
file.ToList().ConvertAll(d => d.ToLower());
【问题讨论】:
-
@Ken'ichiMatsuyama 如果未选择文件,则您的错误是调用此函数。正确的做法是看文件是否被选中,不要往前走,以后再catch异常
-
@Enigmativity 这完全是题外话,但很有用。我个人觉得你应该捕获所有的异常。不用说,您至少应该始终对它做点什么。我一直看到的方式是,您希望您的用户拥有愉快的体验,并且如果由于某种原因出现会导致应用程序失败的错误,那么您不希望用户看到类似 nullObjectException 的内容第 203 行...等等等等...他们希望看到一个错误,告诉他们如何向您报告错误。
-
我的评论要注意的重要一点是,您应该捕获所有异常,但您应该考虑可能希望以不同方式捕获和处理的特定类型的异常。
-
@Keithin8a 没错。捕获异常(通常是较高级)以进行跟踪并向用户显示漂亮的错误消息和懒惰之间存在差异,例如检查用户是否实际选择了文件或取消了操作。我们不会只调用对象上的方法而不检查它是否为空,也不会捕获异常。是的,这非常过时:/
-
@SamiKuhmonen 是的,我再次阅读了您的评论并意识到我回复了错误的人。离题对话有时在 cmets 中很有用。我们都是来学习的,不是吗?但是,是的,他们不应该太过分。
标签: c# wpf dictionary tolower