c#中如何用list对文本文件中的词语按行去重并统计每个词语的次数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#中如何用list对文本文件中的词语按行去重并统计每个词语的次数相关的知识,希望对你有一定的参考价值。
问题1:“文本1”中按行存放词语,不但要去重,还要把所有词语出现的次数统计出来,结果如“文本2”。
问题2:针对“文本2”按照词语次数的大小降序排列,结果如“文本3”。
这样的问题用Linq处理非常方便!
1)代码如下:
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace ConsoleApplication1
class Program
static void Main(string[] args)
//从文本文件中读出所有行
string[] lines = File.ReadAllLines("文本1.txt");
//构造一个Linq查询
var qry = from s in lines
group s by s into ws
orderby ws.Count() descending
select new
Num= ws.Count(),
Word = ws.Key
;
//将结果写入文件
StreamWriter w = File.CreateText("文本3.txt");
foreach (var item in qry)
w.WriteLine(string.Format("0 1", item.Word, item.Num));
w.Close();
2)文本1.txt的内容
3)文本3.txt的内容(运行结果)
追问非常感谢。您这个是用了SQL查询方面的语句吗,
这个方面没接触过,不是很懂。另外就是,在一个文件夹下如果有很多类似的“文本1”需要进行处理(也就是说批处理),这个怎么实现。还有能够不用那个查询语句实现吗。麻烦大神附上代码,谢谢。
用StreamReader 读入内存,然后定义语句变量
用 while ((line = sr.ReadLine()) != null)一行一行读入
然后相同变量相加。最后统计出来后写入
list中,代码不放了,自己想 参考技术B 不需要用到list吧。
直接逐行读取出来就是 字符串数组 了。
以上是关于c#中如何用list对文本文件中的词语按行去重并统计每个词语的次数的主要内容,如果未能解决你的问题,请参考以下文章