读取同一文件夹下多个txt文件中的特定内容并做统计
有网友在问,C#读取同一文件夹下多个txt文件中的特定内容,并把各个文本的数据做统计。
昨晚Insus.NET抽上些少时间,来实现此问题,加强自身的功力。先是准备好几个文本文件。
第一个文本文件t1.txt:
Money of Xiaohong(this year) 12 Money of Xiaoma(Last year) 13 sdfgsd Money of Xiaoqiang(this year) 16 Money of Xiaogang(Last year) 14 45685221, 82684
Money of Xiaohong(this year) 11 Money of Xiaoma(Last year) 8 asdfasdf Money of Xiaoqia sdfkka;sdf asdfasdfads...asdfadsf, ang(Last year) asdfadsfl. Money of Xiaoqiang(this year) 12 .............<<<>..d Money of Xiaogang(Last year) 17 sadf asdf asdf 23
Money of Xiaohong(this year) 15 kkkk----asdfaasdflkiq(0werq)ewro0asdfl Money of Xiaoma(Last year) 6 asdfadsf Money of Xiaoqiang(this year) 22 564465456[[[]ghjfhj]] Money of Xiaogang(Last year) 8
上面3个文本本件中,只有highlight的行是需要获取的。特别是第二个文本文件,虚线的的位置,与想获取的数据行都有相似的地方。
下面Insus.NET创建一个物件class OutstandingAchievement,来做文本文件数据行分析,获取需要的数据行。
上面的类别中,序号#1过滤当前行所有\n\r,并替换为一个空格。
#2过滤当前行所有制表符\t,并替换为一个空格。
#3过滤当前行中多个连续空格,并替换为一个空格。
#4是判断文本行头是否匹配为"Money of ",如果不是将跳过此行。
#5以空格为分段,文本行是否为5个节段。
#6以前四段重新组合,并判断文本行是否匹配"(this year)" 或“(Last year)”。
#7判断最后一个节段是否为数值。
#8 判断前四段的长度是否大于匹配字符长度。
#9最后一个数据,如果不是int,将返回false.
写一个函数,获取所有文本文件: