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

Mar*_*ijn 6 c# regex

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

我的代码看起来像这样:

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

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

mar*_*rto 3

您可以将其包含在正则表达式中

\n\n
Regex reg = new Regex("cli[e\xc3\xab]nt"); // will match both \'client\' and \'cli\xc3\xabnt\' \n
Run Code Online (Sandbox Code Playgroud)\n\n

或者您可以删除字符串中的所有重音符号,然后应用正则表达式。

\n\n
string test = "here g\xc3\xb3es the c\xc3\xb3ntent with client and cli\xc3\xabnt";\n\nchar[] 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\' };\nchar[] accents = { \'\xc3\xa0\',\'\xc3\xa1\',\'\xc3\xa2\',\'\xc3\xa3\',\'\xc3\xa4\',\'\xc3\xa5\',\'\xc3\xa7\',\'\xc3\xa9\',\'\xc3\xa8\',\'\xc3\xaa\',\'\xc3\xab\',\'\xc3\xac\',\'\xc3\xad\',\'\xc3\xae\',\'\xc3\xaf\',\'\xc3\xb1\',\'\xc3\xb2\',\'\xc3\xb3\',\'\xc3\xb4\',\'\xc3\xb6\',\'\xc3\xb5\',\'\xc3\xb9\',\'\xc3\xba\',\'\xc3\xbb\',\'\xc3\xbc\',\'\xc3\xbd\',\'\xc3\xbf\' };\n\n\nfor (int i = 0; i < accents.Length; i++)\n{\n    test = test.Replace(accents[i], replacement[i]);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

这不是很有效,但对于少量文本来说可以完成工作。

\n