在使用.NET时在特定位置插入文本中的一行

3

我目前用于将字符串插入到文本文件中的过程是读取文件并在写出文件时修改它,这似乎是每个人都在使用的方法。

由于.net拥有如此丰富的库,我想知道是否有特定的命令可以在txt文件的特定行中插入字符串。

我想它应该大致如下:

dim file as file
file.open("filePath")

file.insert(string, location) 'this isn't actually an option, I tried
2个回答

8

没有.NET中特别的方法来实现这一点。

如果你愿意阅读所有文本行,那么你可以非常简单地完成它:

var lines = File.ReadAllLines("file.txt").ToList();
lines.Insert(location, text);
File.WriteAllLines("file.txt", lines);

从内存使用的角度来看,按行复制代码并在复制时插入新行会更加高效,但这需要更多的工作量。如果你知道文件很小,我建议采用上述方法。


是的,这看起来就是我想要的。我的代码会稍微长一些,因为位置是变化的,我需要在读取过程中找到位置。 - Aeropher

1

您可以将所有文本读入字符串,然后使用字符串insert方法,例如:

File.WriteAllText("file.txt", File.ReadAllText("file.txt").Insert(startIndex, "value"));

与其他答案类似的概念,但使用列表更加清晰,并允许我使用list.contains("text")来查找所需位置。 - Aeropher
请注意,list.Contains("text")将对完全匹配"文本"的行产生true结果,因为您读取了所有行。如果您需要在行中匹配子字符串,则可以执行类似于list.Where(line => line.Contains("text")).Any()的操作。 - Alex Peck
哈哈,我刚刚发现了这个,我本来打算用“对于列表中的每个项目”“如果在项目中找到‘文本’”这种方式,但你的方法似乎更简短。 - Aeropher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接