注释//要结束,我不知道如何干净地结束子字符串:( 有没有比自己算出数字更简单的方法来到达子字符串的末尾?对于更复杂的字符串,这太难了
string word = Console.ReadLine();
string[] lines = File.ReadAllLines(file);
using (var far = File.CreateText(resultfile))
{
foreach (string line in lines)
{
StringBuilder NewL = new StringBuilder();
int ind = line.IndexOf(word);
if (ind >= 0)
{
if (ind == 0)
{
NewL.Append(line.Substring(ind+ word.Length +1, // go to end);
}else{
NewL.Append(line.Substring(0, ind - 1));
NewL.Append(line.Substring(ind + word.Length + 1, // go to end));}
far.WriteLine(NewL);
}
else
{
far.WriteLine(line);
}
}
我不知道stackoverflow需要更多的细节,任何可以肯定地回答这个问题的人都可以清楚地理解这个简单的代码。
答案 0 :(得分:4)
您可以使用String.Substring(int)
重载,它会自动继续到源字符串的末尾:
NewL.Append(line.Substring(ind + word.Length + 1));
从此实例检索一个子字符串。子字符串从指定的字符位置开始,一直到字符串的末尾。
答案 1 :(得分:2)
在我看来,您只是想从加载的行中删除某个单词。如果这是您的任务,则只需将单词替换为空字符串
var result = lines.Select(x = x.Replace(word,""));
File.WriteAllLines("yourFile.txt", result);
或者甚至没有带有Linq的显式循环
Regex r = new Regex(word + ".");
var result = lines.Select(x => r.Replace(x, ""));
File.WriteAllLines("yourFile.txt", result);
或者,如果需要在单词后匹配一个附加字符,则可以使用正则表达式来解决它。
{{1}}