正则表达式替换 - 多个字符

时间:2009-12-22 15:17:35

标签: c# .net regex

我有20个左右的字符,我需要用文本块中的各种其他字符替换。有没有办法在单个正则表达式中执行此操作,这个正则表达式是什么?或者在.NET中有更简单的方法吗?

例如,我的映射表的摘录是

œ=> OE
ž=> ž
Ÿ=> ÿ
À=>一个
Á=>一个
Â=>一个
Ã=>一个
Ä=> AE

3 个答案:

答案 0 :(得分:4)

如果你真的喜欢用单一正则表达式做,那就有办法做到这一点。

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

答案 1 :(得分:0)

我不知道使用正则表达式做一个简单的方法(不确定是否可行)但是这是一个干净的方法:

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);

答案 2 :(得分:0)

对于字符串替换,我只是在映射表中遍历这些并在它们上使用string.Replace:

foreach(var r in replacements.Values)
{
    myString.Replace(r.Key, r);
}

不是最高效的,但如果你没有很多字符串可以通过它应该足够好:)。