【发布时间】:2013-10-18 01:15:12
【问题描述】:
我有一个文本文件,例如3 行:
Example Text
Some text here
Text
我想在“这里”之后直接添加一些文字,所以它看起来像这样:
Example Text
Some text hereADDED TEXT
Text
到目前为止,我的代码看起来是这样的,我使用了来自here 的一些代码,但它似乎不起作用。
List<string> txtLines = new List<string>();
string FilePath = @"C:\test.txt";
foreach (string s in File.ReadAllLines(FilePath))
{
txtLines.Add(s);
}
txtLines.Insert(txtLines.IndexOf("here"), "ADDED TEXT");
using (File.Create(FilePath) { }
foreach (string str in txtLines)
{
File.AppendAllText(FilePath, str + Environment.NewLine);
}
我的问题是:
txtLines.IndexOf("here") 返回-1,从而抛出System.ArgumentOutOfRangeException。
谁能告诉我我做错了什么?
【问题讨论】:
-
问题是,IndexOf 检查列表中的条目,而不是该条目中的字符串。这表示您必须检查此列表中的每个 ntry(通过任何类型的循环)并检查您搜索的单词是否在此条目中。这意味着您需要先找到该条目,然后才能找到该条目中的位置
-
您想只替换文本
here的第一个实例吗?如果不是,是否必须仅在第 2 行时才更换?如果有像there这样的词呢?应该用whereADDED TEXT代替吗? -
如果我想替换它的最后一个实例,那么我必须使用
LastIndexOf吗?
标签: c# string text-files