C#用正規表示式高效替換變數
有的時候我們需要進行簡單的字串變數替換. 當然最新的.net
已經支援 {name}
這種替換方式. 但是,老的.net
是不支援的. 本方法是把“{{varName}}
” 這種變數替換成 對應的數值.
例如
Week1 = 星期一
Week2 = 星期二
Week3 = 星期三
Week4 = 星期四
“今天是{{Week1}}, 明天是{{Week2}}”
替換結果
“今天是星期一, 明天是星期二”
下面是程式碼
/// <summary>
/// 會自動替換 變數 把形如 "{{varName}}" 替換成對應的數值
/// </summary>
public static void ReplaceFileVar(string srcFile, string targetFile)
{
/*
* 設定webconfig連線字串
*/
string webconfigpath = Path.Combine("./", srcFile);
//修改第一個資料庫連線
string webcofnigstring2 = File.ReadAllText(webconfigpath);
webcofnigstring2 = ReplaceStringVar(webcofnigstring2);
//迴圈替換所有的 {{DBSERVER}} 這種變數 效率比較低,改成上面的replace
//foreach (Match item in mat)
//{
// Console.WriteLine(item.Groups[1]);
// var name = item.Groups[1].Value;
// if (! string.IsNullOrEmpty( InstallContext.Get(name)))
// {
// webcofnigstring2.Replace(@"{{"+ name + "}}", InstallContext.Get(name));
// }
//}
File.WriteAllText(targetFile, webcofnigstring2);
}
/// <summary>
/// 會自動替換 變數 把形如 "{{varName}}" 替換成對應的數值
/// </summary>
private static string ReplaceStringVar(string str)
{
Regex reg = new Regex(@"\{\{(.*?)\}\}");
//var mat = reg.Matches(webcofnigstring2);
str = reg.Replace(str,
new MatchEvaluator(m =>
InstallContext.Get(m.Groups[1].Value) == string.Empty ? m.Value : InstallContext.Get(m.Groups[1].Value)
));
return str;
}
InstallContext.cs
順便也貼一下
public static class InstallContext
{
private static Dictionary<string, string> kvs = new Dictionary<string,string> ();
public static string Get(string index)
{
if (kvs.ContainsKey(index))
{
return kvs[index];
} else
{
return string.Empty;
}
}
public static void Set(string index, string value)
{
kvs[index] = value;
}
//private static InstallContext instance = new InstallContext();
//private InstallContext()
//{
//}
//public static InstallContext GetInstance()
//{
// return instance;
//}
}
下面是使用方法
private void button3_Click(object sender, EventArgs e)
{
InstallContext.Set("WebSiteDBConnectstring",textBox1.Text);
ReplaceFileVar("Web.config.tpl","Web.config");
}
Web.config.tpl
檔案內容
<?xml version="1.0"?>
<configuration>
{{WebSiteDBConnectstring}}
</configuration>
相關文章
- vi 正規表示式替換
- VS 正規表示式替換內容
- Java 正規表示式替換斜槓Java
- 正規表示式的字串替換方法字串
- vim表示式正則替換
- 記一次正規表示式替換,使用 ideaIdea
- 使用正規表示式替換字串的方法(replace方法)字串
- 【Perl程式設計-6】正規表示式--替換+轉化程式設計
- js用正規表示式將英文引號字元替換為中文引號字元JS字元
- 瞭解下C# 正規表示式C#
- 基於正規表示式實現UL下LI的樣式替換功能
- 匹配正整數正規表示式
- 【正規表示式】常用的正規表示式(數字,漢字,字串,金額等的正規表示式)字串
- 簡單介紹Idea使用正規表示式批量替換字串的方法Idea字串
- 學習正規表示式(js、C#)JSC#
- 匹配小數正規表示式
- 匹配負數正規表示式
- 匹配整數正規表示式
- 匹配自然數正規表示式
- java正規表示式替換手機號,身份證號處理 星號Java
- 使用正規表示式替換報表名稱中的特殊字元(推薦)字元
- 正規表示式的應用
- 無法在 nginx 的 “if” 正規表示式中使用變數?Nginx變數
- 匹配n位正整數正規表示式
- 匹配浮點數正規表示式
- 匹配純數字正規表示式
- 正規表示式
- 正規表示式.
- 20個實用正規表示式
- 在 Shell 中轉換 Python 正規表示式Python
- 正規表示式個位數補零
- php –正規表示式PHP
- 【Linux】正規表示式Linux
- 【JavaScript】正規表示式JavaScript
- URL正規表示式
- 正規表示式 split()
- 初探正規表示式
- 正規表示式 test()