我有20个左右的字符,我需要用文本块中的各种其他字符替换。有没有办法在单个正则表达式中执行此操作,这个正则表达式是什么?或者在.NET中有更简单的方法吗?
例如,我的映射表的摘录是
œ=> OE
ž=> ž
Ÿ=> ÿ
À=>一个
Á=>一个
Â=>一个
Ã=>一个
Ä=> AE
答案 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);
}
不是最高效的,但如果你没有很多字符串可以通过它应该足够好:)。