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

时间:2009-08-31 08:27:31

标签: c# string

我有一个字符串以及

的内容
  1. 删除除所有英文字母(a..z)之外的所有字符
  2. 用一个空格替换所有空格序列
  3. 你会如何使用C#3.0做到这一点?

4 个答案:

答案 0 :(得分:8)

正则表达式(编辑)?

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"

答案 1 :(得分:5)

当然,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());

答案 2 :(得分:2)

当然使用正则表达式!

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

答案 3 :(得分:0)

我认为你可以用正则表达式做到这一点.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

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

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