统计包含特定单词uniqueId的文本文件行数异常排查
问题分析与解决
原代码的核心问题是逻辑完全偏离需求:
ReadLine()已经读取了不含换行符的单行内容,你再用换行符分割这行内容,得到的还是原行本身,根本拆不出单独的"uniqueId"字符串,所以SingleOrDefault永远返回null,累加结果自然为0。- 就算你想统计"uniqueId"的出现次数,当前的分割方式也完全错误——用换行符分割没法把"uniqueId"从JSON串里拆分出来。
如果你要统计包含"uniqueId"的行数
直接判断每行是否包含目标字符串即可,代码简化如下:
var total = 0; using (StreamReader sr = new StreamReader(fi.FullName)) { while (!sr.EndOfStream) { string line = sr.ReadLine(); if (!string.IsNullOrEmpty(line) && line.Contains("uniqueId")) { total++; } } }
如果你要统计"uniqueId"的总出现次数(比如某行可能多次出现)
可以用正则匹配统计每行的出现次数再累加:
var total = 0; using (StreamReader sr = new StreamReader(fi.FullName)) { while (!sr.EndOfStream) { string line = sr.ReadLine(); if (!string.IsNullOrEmpty(line)) { total += System.Text.RegularExpressions.Regex.Matches(line, "uniqueId").Count; } } }
内容的提问来源于stack exchange,提问作者NoBullMan
相关产品推荐
相关产品推荐

