如果程序找到要替换的文本,我想删除文本,所以我准备了这段代码:
string[] lines = File.ReadAllLines(@"pathtofile");
int Object = 0;
foreach (string line in lines)
{
if (line.Contains("Object"))
{
MessageBox.Show("contain!");
dsObject++;
}
if (Object == 1)
{
line.Replace("Object", " ");
MessageBox.Show(line);
}
File.AppendAllText(@"savefile.txt", line + Environment.NewLine);
string result = line;
// MessageBox.Show(line);
}
这不起作用。
答案 0 :(得分:4)
c#
中的字符串为immutable因此必须更换
line.Replace("Object", " ");
与
line = line.Replace("Object", String.Empty);
修改
,因为laven-hvar表示您无法更改foreach
项
因此你要改为“普通”for
循环
for (int i = 0; i < lines.Length; i++)
{
lines[i] = lines[i].Replace("Object", String.Empty);
}
答案 1 :(得分:1)
使用for循环而不是foreach循环,因为line = line.Replace("Object", String.Empty)
将无法编译,因为line
是foreach迭代变量。而不是line = line.Replace("Object", String.Empty)
在for循环中使用lines[i]=lines[i].Replace("Object", String.Empty);
:
string[] lines = File.ReadAllLines(@"pathtofile");
int Object = 0;
for (int i = 0; i < lines.Length; i++)
{
if (lines[i].Contains("Object"))
{
MessageBox.Show("contain!");
dsObject++;
}
if (Object == 1)
{
lines[i]=lines[i].Replace("Object", String.Empty);
MessageBox.Show(lines[i]);
}
File.AppendAllText(@"savefile.txt", lines[i] + Environment.NewLine);
string result = lines[i];
}
如果您希望缩短代码,可以使用此LINQ解决方案:
var result = lines.Select(x => x.Replace("Object", String.Empty)).ToList();
result.ForEach(line=>File.AppendAllText(@"savefile.txt", line + Environment.NewLine));