[英]How to replace multiple texts in a file in c#?
我正在使用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
在單發射擊。
怎么做到這一點?
問題是您沒有指定Replace方法的return value
。 替換不會修改this
字符串,而是返回替換的字符串。
像這樣改變它:
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/%';
如果事情在數字上是順序的,你可以這樣做:
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);
您可以為此創建自定義方法。
private void MultipleReplace(string text, string[] oldValues, string[] newValues)
{
for (int i = 0; i < old.Length; i++)
{
text = text.replace(oldValues[i], newValues[i]);
}
}
你需要考慮替代的順序,因為一旦你更換Proxy430
通過Proxy440
,你再也不能更換Proxy440
通過Proxy450
,因為這也將替換在上一次迭代更新的值。
例:
string text = File.ReadAllText(filePath);
string[] oldValues = { "Proxy440", "Proxy430" };
string [] newValues = { "Proxy450", "Proxy440" };
MultipleReplace(text, oldValues, newValues);
File.WriteAllText(filepath, text);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.