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>
相關文章
- java正規表示式替換Java
- vi 正規表示式替換
- Java 正規表示式替換斜槓Java
- 正規表示式的字串替換方法字串
- python使用正規表示式文字替換Python
- 使用正規表示式替換字串的方法(replace方法)字串
- C#正規表示式(RegEx)高階應用之分組(Group)替換(Replace)C#
- 記一次正規表示式替換,使用 ideaIdea
- 【Perl程式設計-6】正規表示式--替換+轉化程式設計
- eclipse使用技巧---使用正規表示式查詢替換Eclipse
- C# 常用正規表示式C#
- c# 正規表示式(轉)C#
- perl正規表示式中的特殊變數變數
- C#驗證是不是正整數 正規表示式C#
- Java經典例項:正規表示式,替換匹配的文字Java
- JS中使用正規表示式替換物件裡的大小寫JS物件
- js用正規表示式將英文引號字元替換為中文引號字元JS字元
- VS.net 中,使用正規表示式進行查詢、替換
- 瞭解下C# 正規表示式C#
- 基於正規表示式實現UL下LI的樣式替換功能
- 【正規表示式】常用的正規表示式(數字,漢字,字串,金額等的正規表示式)字串
- 正規表示式將日期字串的中劃線替換為斜槓/字串
- editplus和ultraedit刪除空行(ultraedit其它常用正規表示式替換)
- 學習正規表示式(js、C#)JSC#
- 正規表示式的應用
- 正規表示式應用收集
- Java正規表示式應用Java
- 使用正規表示式替換報表名稱中的特殊字元(推薦)字元
- 簡單介紹Idea使用正規表示式批量替換字串的方法Idea字串
- java正規表示式替換手機號,身份證號處理 星號Java
- 無法在 nginx 的 “if” 正規表示式中使用變數?Nginx變數
- C#基礎回顧:正規表示式C#
- 正規表示式
- 20個實用正規表示式
- 匹配換行的正規表示式程式碼
- 匹配正負小數正規表示式程式碼
- c# 中常用的正規表示式總結C#
- C# 正規表示式 只允許字母、中文C#