我想在字符串中执行不区分重音的替换。我希望'客户'匹配'cliënt',反之亦然。
我的代码如下所示:
Regex reg = new Regex("client");
string result = reg.Replace("here goes the content with client and cliënt", "replacementWith");
那么,我如何确保'客户'匹配'客户'和'cliënt',反之亦然?
答案 0 :(得分:3)
您可以将其包含在Regex
中Regex reg = new Regex("cli[eë]nt"); // will match both 'client' and 'cliënt'
或者您可以删除字符串中的所有重音符,然后应用正则表达式。
string test = "here góes the cóntent with client and cliënt";
char[] replacement = { 'a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','n','o','o','o','o','o','u','u','u','u','y','y' };
char[] accents = { 'à','á','â','ã','ä','å','ç','é','è','ê','ë','ì','í','î','ï','ñ','ò','ó','ô','ö','õ','ù','ú','û','ü','ý','ÿ' };
for (int i = 0; i < accents.Length; i++)
{
test = test.Replace(accents[i], replacement[i]);
}
这不是很有效,但会为少量文本做好准备。
答案 1 :(得分:0)
请记住,你需要在特定的文化中工作 - 没有任意的口音替代文化,因为在一种文化中,e和ë可能被认为是等同的,在另一种文化中,它们可能是不同的。