mp_decals "300.000000"
name "lulu"
net_graph "0"
net_graphpos "0"
volume "2"
文本内容如上,如何操作将存在的name此行删除,并且再追加一行新值name "xx" ?

解决方案 »

  1.   

    并且name所在的行的顺序并不是固定的,并不一定是第2行
      

  2.   

    一行一行读,判断是不是name,再找引号
      

  3.   

    参考如下代码://using System.IO;///////读入文本文件
    StreamReader vStreamReader = new StreamReader(
        @"C:\temp\temp.txt", Encoding.Default);
    string vText = ""; // 新的内容
    string vLine; // 遍历每一行
    while ((vLine = vStreamReader.ReadLine()) != null)
    {
        if (vLine.IndexOf("name ") != 0) // 如果第一个位置出现的是 "name "那么忽略
            vText += vLine + "\r\n";
    }
    vStreamReader.Close(); // 关闭文件,避免占用
    vText += "name \"xxxx\""; // 添加“name "xxxx"”
    StreamWriter vStreamWriter = new StreamWriter(@"C:\temp\temp.txt", 
        false, Encoding.Default);
    vStreamWriter.Write(vText);
    vStreamWriter.Close();
      

  4.   

    谢谢4楼地同志,我现在用ArrayList来保存后判断也实现了,再请教一下,如果我不使用删除的方法而且采用替换值的方法,直接找到name这行,能否替换它后面双引号中的值,前提引号中的值是变动的,代码应该如何写?
      

  5.   

    原理差不多,不过楼主要处理配置文件建议使用xml格式,比较方便和流行
    ///////读入文本文件
    StreamReader vStreamReader = new StreamReader(
        @"C:\temp\temp.txt", Encoding.Default);
    string vText = ""; // 新的内容
    string vLine; // 遍历每一行
    while ((vLine = vStreamReader.ReadLine()) != null)
    {
        if (vLine.IndexOf("name ") == 0) //替换
        {
            vLine = "name \"xxxx\""; // 这里也可以加上是否改变的判断,来决定后面是否保存
        }
        vText += vLine + "\r\n";
    }
    vStreamReader.Close(); // 关闭文件,避免占用
    StreamWriter vStreamWriter = new StreamWriter(@"C:\temp\temp.txt", 
        false, Encoding.Default);
    vStreamWriter.Write(vText);
    vStreamWriter.Close();
      

  6.   

    同意楼上的 ,
    用XML可以直接读出NAME的内容。