我创建了一个Windows窗体应用程序,我有一个TextBox
,其文本位置如下:C:\DATA\FOLDER
。
此外,我在d:\data\test.txt
中有一个文本文件,其中包含许多行,但为Location=""
定义了一行。
如何在TextBox
行的文本文件test.txt
中复制Location=""
中指定的位置,而不提及行号?
答案 0 :(得分:6)
你可以在一行中完成
var path = @"d:\data\test.txt";
File.WriteAllLines(path, File.ReadAllLines(path)
.Select(line => line.StartsWith("Location=\"")
? string.Format("Location=\"{0}\"", textBox1.Text)
: line));
首先你读取文件中的所有行,如果其中任何一行以“Location =”开头,那么它将被文本框中的位置替换。最后你将结果写回文件。
如果你不喜欢在一行中做(并且对我而言没有为它投票)那么你可以将它拆分
var path = @"d:\data\test.txt";
var lines = File.ReadAllLines(path);
var modifiedLines = lines.Select(line =>
{
if (line.StartsWith("Location=\""))
{
return string.Format("Location=\"{0}\"", textBox1.Text);
}
else
{
return line;
}
});
File.WriteAllLines(path, modifiedLines);
我认为有时候编写更多代码会降低可读性!
答案 1 :(得分:4)
string text = File.ReadAllText("test.txt");
string filepath=textBox1.Text;
text = text.Replace("Location="" "," Location= "+filepath+");
File.WriteAllText("test.txt", text);
答案 2 :(得分:2)
这也有效:
IList<string> output = new List<string>();
using (StreamReader sr = new StreamReader("d:\\data\\test.txt"))
{
string line;
while ((line = sr.ReadLine()) != null)
{
if (line.StartsWith("Location=\""))
{
line = String.Format("Location=\"{0}\"", "TextBox.Text");
}
output.Add(line);
}
}
File.WriteAllText("d:\\data\\test.txt", string.Join(Environment.NewLine, output));