正则表达式删除特殊字符

我们需要一个C#函数,它将从字符串中删除所有特殊字符。

此外,是否可以将“乔治”更改为“乔治”(删除单引号和字符)?

此方法将删除除字母,数字和空格之外的所有内容。 它还将删除字符s后面的任何“或”。

public static string RemoveSpecialCharacters(string input) { Regex r = new Regex("(?:[^a-z0-9 ]|(?<=['\"])s)", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Compiled); return r.Replace(input, String.Empty); } 
 public static string RemoveSpecialCharacters(string input) { Regex r = new Regex( "(?:[^a-zA-Z0-9 ]|(?<=['\"])s)", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Compiled); return r.Replace(input, String.Empty); } 

瑞安的回答是对的。 只需添加AZ以及许多人需要它。

如果我们知道什么是特殊角色会有所帮助。 这是一个function虽然可以解决问题

 public bool IsSpecialChar(char c) { // Need you to fill this out } public string RemoveSpecialChars(string s) { var builder = new System.Text.StringBuilder(); foreach (var cur in s) { if (!IsSpecialChar(cur)) { builder.Append(cur); } } return builder.ToString(); } 

最好定义一个你想要保留的字符列表,而不是枚举你不想要的所有其他字符。 例如,使用perlregexes s/[^A-Za-z0-9]+//g将删除任何非单词字符(抱歉,我不熟悉c#regexes:D)。

对于你的另一个问题,你可以根据前面的单词定义要删除的内容,如果你关心某些情况(比如只删除前面有一个单词的那个),否则只删除所有出现的单词。