c#中如何用list对文本文件中的词语按行去重并统计每个词语的次数
问题1:“文本1”中按行存放词语,不但要去重,还要把所有词语出现的次数统计出来,结果如“文本2”。问题2:针对“文本2”按照词语次数的大小降序排列,结果如“文本3”。...
问题1:“文本1”中按行存放词语,不但要去重,还要把所有词语出现的次数统计出来,结果如“文本2”。
问题2:针对“文本2”按照词语次数的大小降序排列,结果如“文本3”。 展开
问题2:针对“文本2”按照词语次数的大小降序排列,结果如“文本3”。 展开
3个回答
展开全部
这样的问题用Linq处理非常方便!
1)代码如下:
using System;
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的内容(运行结果)
展开全部
给你个思路
用StreamReader 读入内存,然后定义语句变量
用 while ((line = sr.ReadLine()) != null)一行一行读入
然后相同变量相加。最后统计出来后写入
list中,代码不放了,自己想
用StreamReader 读入内存,然后定义语句变量
用 while ((line = sr.ReadLine()) != null)一行一行读入
然后相同变量相加。最后统计出来后写入
list中,代码不放了,自己想
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不需要用到list吧。
直接逐行读取出来就是 字符串数组 了。
直接逐行读取出来就是 字符串数组 了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询