C#如何用正则表达式替换重音不敏感的字符串?

时间:2011-05-16 13:29:17

标签: c# regex

我想在字符串中执行不区分重音的替换。我希望'客户'匹配'cliënt',反之亦然。

我的代码如下所示:

Regex reg = new Regex("client");
string result = reg.Replace("here goes the content with client and cliënt", "replacementWith");

那么,我如何确保'客户'匹配'客户'和'cliënt',反之亦然?

2 个答案:

答案 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)

Have a look at this page

请记住,你需要在特定的文化中工作 - 没有任意的口音替代文化,因为在一种文化中,e和ë可能被认为是等同的,在另一种文化中,它们可能是不同的。