У меня есть строка и что
Как бы вы сделали это с C # 3.0?
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"
Конечно, решение 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]", "");
Я думаю, что вы можете сделать это с помощью регулярного выражения. Что упомянули Марк и Бэквурм.
Попробуйте также эти ссылки 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», чтобы соответствовать любому символу, не являющемуся пробелом.