C#3.0从字符串中删除字符

我有一个字符串,该怎么做

  1. 删除除英文字母以外的所有字符(a..z)
  2. 用一个空格替换所有空格序列

你会怎么用C#3.0做到这一点?

正则表达式(编辑)?

string s = "lsg @~A\tSd 2£R3 ad"; // note tab s = Regex.Replace(s, @"\s+", " "); s = Regex.Replace(s, @"[^a-zA-Z ]", ""); // "lsg A Sd R ad" 

当然,Regex解决方案是最好的(我认为)。 但有人有必要在LINQ中这样做,所以我有一些乐趣。 你去:

 bool inWhiteSpace = false; string test = "lsg @~A\tSd 2£R3 ad"; var chars = test.Where(c => ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || char.IsWhiteSpace(c)) .Select(c => { c = char.IsWhiteSpace(c) ? inWhiteSpace ? char.MinValue : ' ' : c; inWhiteSpace = c == ' ' || c == char.MinValue; return c; }) .Where(c => c != char.MinValue); string result = new string(chars.ToArray()); 

当然使用正则表达式!

 string myCleanString = Regex.Replace(stringToCleanUp, @"[\W]", ""); string myCleanString = Regex.Replace(stringToCleanUp, @"[^a-zA-Z0-9]", ""); 

我认为你可以用正则表达式做到这一点.Marc和boekwurm提到了什么。

请尝试这些链接http://www.c-sharpcorner.com/UploadFile/prasad_1/RegExpPSD12062005021717AM/RegExpPSD.aspx

http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.aspx

注意:[az]:一系列字符。 匹配指定范围内的任何字符。 例如,“[az]”匹配范围“a”到“z”中的任何小写字母字符。

正则表达式还提供特殊字符来表示常见字符范围。 您可以使用“[0-9]”匹配任何数字,或者您可以使用“\ d”。 同样,“\ D”匹配任何非数字数字。 使用“\ s”匹配任何空白字符,并使用“\ S”匹配任何非空白字符。