C # 3.0 Удалить символы из строки - PullRequest
3 голосов
/ 31 августа 2009

У меня есть строка и что

  1. удалить все символы, кроме букв английского алфавита (a..z)
  2. заменить все последовательности пробелов одним пробелом

Как бы вы сделали это с C # 3.0?

Ответы [ 4 ]

8 голосов
/ 31 августа 2009

Regex (отредактировано)?

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"
5 голосов
/ 31 августа 2009

Конечно, решение 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 голосов
/ 31 августа 2009

Использование регулярных выражений, конечно!

string myCleanString = Regex.Replace(stringToCleanUp, @"[\W]", "");
string myCleanString = Regex.Replace(stringToCleanUp, @"[^a-zA-Z0-9]", "");
0 голосов
/ 31 августа 2009

Я думаю, что вы можете сделать это с помощью регулярного выражения. Что упомянули Марк и Бэквурм.

Попробуйте также эти ссылки 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]» соответствует любому строчному алфавиту символ в диапазоне от «а» до «z».

Регулярные выражения также предоставляют специальные символы для представления общих символов диапазоны. Вы можете использовать «[0-9]», чтобы соответствовать любой числовой цифре, или вы можете использовать «\ d». Так же, «\ D» соответствует любой нецифровой цифре. Используйте «\ s», чтобы соответствовать любому символу пробела, и используйте «\ S», чтобы соответствовать любому символу, не являющемуся пробелом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...