c# - 如何将多行读到同一行?

标签 c#

好吧,这个标题并不是最好的。但这是我的问题:

我制作了一个小程序,当外部程序发生特定事件时,它会将一些名称和一个整数写入 .txt 文档。

事情是一个名字可以在文档中出现在几行中,所以我想总结每个特定人的整数,以便我得到他/她的总点数,然后对其进行排序。

例如:

原行:

Aaaa Aaa 5
Bbbb Bbb 7
Cccc Ccc 2
Aaaa Aaa 4
Cccc Ccc 4
Bbbb Bbb 1
Dddd Ddd 1

我想要的输出:

1. Aaaa Aaa 9
2. Bbbb Bbb 8
3. Cccc Ccc 6
4. Dddd Ddd 1

有没有办法在 C# 中做到这一点? 我试图阅读文件中的每一行并搜索一个人的名字。但这并没有真正帮助,我不知道如何解决这个问题。 有什么建议吗?

最佳答案

显然,文本在某种程度上是您用来汇总数字的关键字,那么为什么不使用 Dictionary<string, int> 呢?先总结后写?

例子:

Dictionary<string, int> sums = new Dictionary<string, int>();

...

if (sums.ContainsKey(theNewString))
    sums[theNewString] += theNewNumber;
else
    sums[theNewString] = theNewNumber;

当你知道你已经完成了,写这个文件。您也可以在每次更新字典后重新写入该文件,但请记住,如果您不清除它,字典会越来越大。

另外:如果程序重新启动,这将不起作用,除非您在程序每次启动时都创建一个新文件。否则,当程序开始继续求和时,您必须将现有文件读入字典。

关于c# - 如何将多行读到同一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17084558/

相关文章:

c# - Visual Studio 2015 花括号格式 : If, Else If, Else

c# - 从 C# 读取 XML 配置数据文件

c# - 使用 CQRS 方法处理并发

c# - WP8后台代理网络请求

c# - WebApi POST 可以在没有 [FromBody] 的情况下工作吗?

c# - 如何更改 Dapper 扩展中的方言?

带有枚举数组的 C# 反射

c# - 这个短路的 if 语句有什么问题?

c# - 在 C# 中访问 __VIEWSTATE 和 __EVENTVALIDATION

c# - 在 include 内使用 where 子句生成错误 "The Include path expression must refer to a navigation property defined on the type"