如何在c#中替换文件中的多个文本?

如何在c#中替换文件中的多个文本?,c#,winforms,C#,Winforms,我正在使用c#自动化一个过程。我的脚本如下所示 UPDATE Table SET param_val = REPLACE(param_val,'Proxy430/','Proxy440/') WHERE param_key = 'PROXY_URL'; UPDATE Table SET param_val = REPLACE (param_val, '.420/', '.430/') WHERE param_val LIKE '%.420/%';

我正在使用c#自动化一个过程。我的脚本如下所示

 UPDATE   Table
 SET   param_val = REPLACE(param_val,'Proxy430/','Proxy440/')
 WHERE   param_key = 'PROXY_URL'; 

 UPDATE   Table 
 SET   param_val = REPLACE (param_val, '.420/', '.430/')
 WHERE   param_val LIKE '%.420/%';  
对于每个月,我们都会升级版本,如
44
代替
43
43
代替
42
,并运行此脚本。为了实现自动化,我编写了C代码并使用了下面的代码

string text = File.ReadAllText(filePath);
text.Replace(oldvale, newvalue);
File.WriteAllText(filepath, text);
但问题是它只能代替一个词。如何替换文件中的两个文本。在我的情况下,
Proxy430
应在单次激发中替换为
Proxy440
,并将
Proxy440
替换为
Proxy450


如何做到这一点?

如果事情确实是按数字顺序进行的,您可以这样做:

string text = File.ReadAllText(filePath);
for (int i=lowestVersion; i < highestVersion; i++)
{
     var oldValue = i.ToString() + "0";
     var newValue = (i+1).ToString() + "0";
     text.Replace(oldValue , newvalue);
}
File.WriteAllText(filepath, text);
text = text.Replace(oldvale, newvalue);
string text=File.ReadAllText(filePath);
对于(int i=最低版本;i<最高版本;i++)
{
var oldValue=i.ToString()+“0”;
var newValue=(i+1).ToString()+“0”;
text.Replace(旧值、新值);
}
writealText(文件路径,文本);

您可以为此创建自定义方法

private void MultipleReplace(string text, string[] oldValues, string[] newValues)
{
    for (int i = 0; i < old.Length; i++)
    {
        text = text.replace(oldValues[i], newValues[i]);
    }
}

问题是您没有分配Replace方法的
返回值
。Replace不修改
此字符串,它返回被替换的字符串

更改如下:

string text = File.ReadAllText(filePath);
for (int i=lowestVersion; i < highestVersion; i++)
{
     var oldValue = i.ToString() + "0";
     var newValue = (i+1).ToString() + "0";
     text.Replace(oldValue , newvalue);
}
File.WriteAllText(filepath, text);
text = text.Replace(oldvale, newvalue);

这里有一个。

如果您按正确的顺序调用replace,您可以在一行中完成两个替换

string TestString = @"UPDATE   Table
SET param_val = REPLACE(param_val, 'Proxy430/', 'Proxy440/')
WHERE param_key = 'PROXY_URL';

UPDATE Table
SET param_val = REPLACE(param_val, '.420/', '.430/')
WHERE param_val LIKE '%.420/%'; ";

const string oldFrom = "Proxy430";
const string oldTo = "Proxy440";
const string newFrom = "Proxy440";
const string newTo = "Proxy450";

string result = TestString.Replace(newFrom, newTo).Replace(oldFrom, oldTo);
Console.WriteLine(result);
输出为:

UPDATE   Table
 SET param_val = REPLACE(param_val, 'Proxy440/', 'Proxy450/')
 WHERE param_key = 'PROXY_URL';

UPDATE Table
 SET param_val = REPLACE(param_val, '.420/', '.430/')
 WHERE param_val LIKE '%.420/%';

OP写道,他只能用代码替换一个单词。由此看来,我认为缺少作业只是一个打字错误。谢谢。它适合我,我也开发了同样的功能