C#实现删除文本文件中无后续内容的Length行
移除文件中
Length后无内容的行 嘿,我懂你现在的需求——之前你是给那些Length后面没值的行补个0,现在想直接删掉这类行对吧?咱们来调整下代码逻辑就行。
首先明确要删除的行的特征:行内包含Length,并且Length是这一行的最后一个有效元素(也就是它后面没有其他内容了)。基于这个判断,我们可以用LINQ的过滤功能来实现:
// 读取源文件的所有行 var originalLines = System.IO.File.ReadAllLines(strLabelExportPreLenAdjust); // 过滤掉不符合要求的行 var filteredLines = originalLines.Where(line => { // 按空格分割行内容,同时去掉空元素(处理连续空格的情况) var lineParts = line.Split(' ', StringSplitOptions.RemoveEmptyEntries); // 找到"Length"在分割后的数组中的位置 int lengthPosition = Array.IndexOf(lineParts, "Length"); // 保留的条件:要么行里没有"Length",要么"Length"后面还有其他内容 return lengthPosition == -1 || (lengthPosition + 1 < lineParts.Length); }); // 将过滤后的行写入目标文件 System.IO.File.WriteAllLines(strLabelExportTotal, filteredLines);
代码说明:
- 用
Split(StringSplitOptions.RemoveEmptyEntries)是为了避免连续空格导致分割出空字符串,干扰我们判断Length后面是否有内容。 - 核心逻辑是检查:如果行里存在
Length,那它的索引必须不是数组的最后一位(也就是后面还有元素),这样的行才会被保留;反之就会被过滤掉(也就是删除)。
这样处理后,你就能得到想要的结果:
Name Peter Length 185
Name Susan
Name Harry Length 177
内容的提问来源于stack exchange,提问作者Tomas Nordström
相关产品推荐
相关产品推荐

