我的术语可能有点在这里,但我试图从C#中的字符串中删除非字母,所以删除破折号&符号等,但保留重音字符和汉字等字符.我在SO上看到的所有C#示例都有这样的正则表达式new Regex("[^a-zA-Z0-9 -]");,但我的需求超出了ascii字符.
string input = "I- +AM. ?? AZURÉE& /30%";
string output = "I AM ?? AZURÉE 30";
一个好的起点是根据角色删除角色Unicode 字符类删除字符。例如,此代码删除所有标点符号、符号或控制字符:
\n\nstring input = "I- +AM. \xe7\x9b\xb8\xe5\x85\xb3 AZUR\xc3\x89E& /30%";\nvar output = Regex.Replace(input, "[\\\\p{S}\\\\p{C}\\\\p{P}]", "");\nRun Code Online (Sandbox Code Playgroud)\n\n您还可以尝试白名单方法,仅允许某些类。例如,这仅保留字母、变音符号、数字和空格字符:
\n\nvar output = Regex.Replace(input, "[^\\\\p{L}\\\\p{M}\\\\p{N}\\\\p{Z}]", "");\nRun Code Online (Sandbox Code Playgroud)\n\n\n