【发布时间】:2012-07-29 04:58:54
【问题描述】:
目前我正在编写一个库来简化 INI 文件的读写,当键和值不存在但我无法轻松更新值时,我已经让阅读器工作和写入,我尝试了各种方法来替换字符串,但没有一个是实用的,程序需要旧值
这是我从这里尝试过的一个示例:Regular Expression to replace unknown value in text file - c# and asp.net
Regex rgx = new Regex(@"SQL-SERVER-VERSION="".*?""");
string result = rgx.Replace(input, replacement);
但每次我修改该代码以替换值时,它最终都会替换键,从而导致应用下次尝试读取文件时出错。
这是我目前使用的代码:
private string wholedata;
private void UpdateKey(string key, string path, string newval)
{
try
{
using (StreamReader s = new StreamReader(File.Open(path, FileMode.Open)))
{
wholedata = s.ReadToEnd();
Regex rgx = new Regex(key + ".*?");
string result = rgx.Replace(wholedata, newval);
MessageBox.Show(result);
}
using (StreamWriter s = new StreamWriter(File.Open(path, FileMode.OpenOrCreate)))
{
s.Write(wholedata);
}
}
catch (Exception e)
{
}
}
【问题讨论】:
-
为什么要重写系统已经知道怎么做?看看这个项目:codeproject.com/Articles/1966/…。无论如何,您正在编写旧值(wholedata),而不是新值(结果)。这可能是根本原因。
-
感谢您这么快的回复!我希望实现我自己的版本,虽然看到这个我可能只是在此基础上构建它,谢谢! :)
-
我的第一个问题是它是否未知 - 你怎么知道它在那里 :-)
-
@PreetSangha 我认为这就是
.*?在密钥未知后的位
标签: c# regex string random replace