繁体   English   中英

正则表达式删除特殊字符

[英]Regex remove special characters

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

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

此方法将删除字母,数字和空格以外的所有内容。 它还将删除任何'或“后跟字符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 ,许多人就会需要它。

如果我们知道特殊字符会有所帮助。 这是一个可以解决问题的函数

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不熟悉)。

为了您的其他问题,您可以定义以去除基于什么对前一个字,如果你在乎某些情况下(如只有消除's ,如果有前一个字),否则只是删除所有出现's

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM