我有20個左右的字符,我需要用文本塊中的各種其他字符替換。有沒有辦法在一個正則表達式中做到這一點,這個正則表達式會是什麼?或者有更簡單的方法來在.NET中做到這一點?正則表達式替換 - 多個字符
例如,來自我的映射表的摘錄是
OE => OE
Z =>ž
Y =>ý
A =>甲
A =>甲
A = >一個
A =>一個
△=> AE
我有20個左右的字符,我需要用文本塊中的各種其他字符替換。有沒有辦法在一個正則表達式中做到這一點,這個正則表達式會是什麼?或者有更簡單的方法來在.NET中做到這一點?正則表達式替換 - 多個字符
例如,來自我的映射表的摘錄是
OE => OE
Z =>ž
Y =>ý
A =>甲
A =>甲
A = >一個
A =>一個
△=> AE
我不知道一個簡單的方法做使用正則表達式它(不知道這是可能的),但這裏是C EAN辦法做到這一點:
var replaceChars = new Dictionary<string, string>
{
{"œ", "oe"},
{"ž", "z"}
};
string s = "ždfasœ";
foreach (var c in replaceChars)
s = s.Replace(c.Key, c.Value);
Console.WriteLine(s);
StringBuilder將是一個更好的解決方案。 – Joe 2009-12-22 18:17:06
對於字符串替換,我只是通過這些迭代在映射表,並在他們使用與string.replace:
foreach(var r in replacements.Values)
{
myString.Replace(r.Key, r);
}
不是最高效的,但如果你沒有太多的字符串可以通過它應該足夠好:)。
如果你真的想在單個正則表達式中做到這一點,有辦法做到這一點。
Dictionary<string, string> map = new Dictionary<string, string>() {
{"œ","oe"},
{"ž", "z"},
{"Ÿ","Y"},
{"À","A"},
{"Á","A"},
{"Â","A"},
{"Ã","A"},
{"Ä","AE"},
};
string str = "AAAœžŸÀÂÃÄZZZ";
Regex r = new Regex(@"[œžŸÀÂÃÄ]");
string output = r.Replace(str, (Match m) => map[m.Value]);
Console.WriteLine(output);
結果
AAAoezYAAAAEZZZ
你真的使用Regex.Replace(),或者你可以接受任何解決方案,如與string.replace( 「A」,一個)? – serhio 2009-12-22 15:49:56