简体   繁体   English

StreamWriter用新文本替换行

[英]StreamWriter replace line with a new text

Is it possible to replace the text in a text file with a new text without erasing the other data, here is my sample code, but its not working, I know there's a problem with it but I can't figure out, thanks, 是否有可能用新文本替换文本文件中的文本而不删除其他数据,这是我的示例代码,但它不起作用,我知道它有问题,但我无法弄清楚,谢谢,

private void button1_Click_1(object sender, EventArgs e)
{
    StreamReader sr = new StreamReader("test10101.txt");
    List<string> lines = new List<string>();
    while (!sr.EndOfStream)
        lines.Add(sr.ReadLine());
    output = Convert.ToInt32(textBox1.Text);
    newbal = Convert.ToInt32(lines[0]) - output;
    MessageBox.Show("Please get your cash....\n\nYour new balance is: $" + newbal);
    sr.Close();
    {
        string linetoreplace = lines[0];
        int newlinevalue = newbal;
        string contents = sr.ReadToEnd();

        StreamWriter sw = new StreamWriter("test10101.txt" + ".tmp");
        //contents = Regex.Replace(contents, linetoreplace, newlinevalue.ToString());
        contents = contents.Replace(linetoreplace, newlinevalue.ToString());
        sw.WriteLine(contents);
        sw.Close();

    }

I'm wondering if I use the Regex or directly replace the line, 我想知道我是否使用正则表达式或直接替换线,

You could do it a lot more easily: 你可以更容易地做到这一点:

        string[] lines = System.IO.File.ReadAllLines("test");
        lines[0] = /* replace with whatever you need */
        System.IO.File.WriteAllLines("test", lines);

hope this helps 希望这可以帮助

also I'd suggest using int.TryParse if you don't want an exception to be raised in your portion of code in case the first line of the file or the textbox values aren't numeric 如果你不希望在你的代码部分引发异常,我也建议使用int.TryParse ,以防文件的第一行或文本框值不是数字

if you really want to use the streamwriter you could go with this, also a simpler way: 如果你真的想使用这个,你可以使用这个,也是一个更简单的方法:

line[0] = newbal.ToString();
foreach(string s in lines)
    sw.WriteLine(s);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM