【发布时间】:2014-11-27 15:43:37
【问题描述】:
让我举个例子说明我的文件的外观:
Hello
my
name
is
现在,例如,我想用 System.IO.File.ReadAllLines(); 遍历这个文件的不同行;然后用循环检查当前行中是否包含单词“my”(在这种情况下是第二行)。
下一步,我想在“my”之后添加一个新行,如下所示:
Hello
my
name
is
我现在用 2 种方法来解决这个问题。我希望 File.Append();将提供一种方法,我可以在 找到我要查找的字符串之后附加任何内容,但显然它只提供将字符串附加到文件末尾的方法。
我的第二种方法是使用 string[] test=System.IO.File.ReadAllLines(); 读取所有行 然后遍历所有行,检查每一行
for (int i = 0; i < (test.Length - 1); i++)
{
if(test[i].Contains("my"))
{
test[i] = test[i] + Environment.NewLine;
}
}
然后使用 System.IO.File.WriteAllLines(); 将所有这些写回文件中;
我在这里面临的问题是这个命令并没有真正在文件中添加一个真正的新行,因为我已经检查了 test.Length 之前和之后,结果两次我都得到了 4。
【问题讨论】:
-
你正在写回结果?你能告诉我们更多代码吗?
-
尝试使用 StringBuilder 代替:逐行读取(ReadAllLines() 的插入;您正在使用)并使用 Append() 或 AppendLine()。
-
而不是
Environment.NewLine使用\r\n在字符串后面添加 -
@VDesign 这会有什么不同?如果在 Windows(或更恰当地说,非 Unix 系统)中运行,
Environment.NewLine是文字字符串“\r\n”。见这里:msdn.microsoft.com/en-us/library/…