gpt4 book ai didi

c# - 从 StringBuilder 中删除连续的空白行

转载 作者:太空狗 更新时间:2023-10-29 22:55:40 24 4
gpt4 key购买 nike

我有一个从文本文件填充的 Stringbuilder 对象。如何检查 StringBuilder 对象并删除连续的“空白”行。

Line 1: This is my text
Line 2:
Line 3: Another line after the 1st blank one
Line 4:
Line 5:
Line 6: Next line after 2 blank lines

(行号仅供引用)

第 2 行的空行没问题,但我想删除重复的空行,第 5 行,依此类推。

如果为了论证第 6 行也是一个空行,而第 7 行有一个值,我想删除第 5 行和第 6 行空行,这样第 3 行之间就只有 1 个空行和第 7 行。

提前致谢。

最佳答案

您是否必须已经在 StringBuilder 中拥有文件内容?

如果能够逐行阅读会更好。像这样的东西:

private IEnumerable<string> GetLinesFromFile(string fileName)
{
using (var streamReader = new StreamReader(fileName))
{
string line = null;
bool previousLineWasBlank = false;
while ((line = streamReader.ReadLine()) != null)
{
if (!previousLineWasBlank && string.IsNullOrEmpty(line))
{
yield return line;
}

previousLineWasBlank = string.IsNullOrEmpty(line);
}
}
}

现在您可以像这样阅读您的文本(已经删除了重复的空行):

foreach (var line in GetLinesFromFile("myFile.txt"))
{
Console.WriteLine(line);
}

注意:我在这里只是说明一种技术。还有其他考虑因素:例如我的迭代器方法在消费者处理 foreach 时保持文件打开。这很好而且内存效率高(例如比读入字符串更有效),因为您一次只处理一行,但对于需要很长时间处理的文件来说并不理想。

关于c# - 从 StringBuilder 中删除连续的空白行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3205864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com