Удалите нецифровые или не-буквы из строки в C#
Иногда вам может понадобиться извлечь только строки, буквы или другую группу символов из строки. Вы можете прокручивать строку, анализируя каждый символ в отдельности. К счастью, есть намного более простой способ сделать это.
Класс регулярного выражения Regex предоставляет статический Replace метод, который заменяет символы, соответствующие шаблону новым значением. Следующий код использует этот метод для замены нецифровых и не-букв на «».
private void btnReplace_Click(object sender, EventArgs e) { // Показывать только буквы. txtLetters.Text = Regex.Replace(txtString.Text, "[^a-zA-Z]", ""); // Показывать только цифры. txtDigits.Text = Regex.Replace(txtString.Text, "[^0-9]", ""); }
Ключ - это шаблон, используемый Replace. Например, рассмотрим первый шаблон [^ a-zA-Z]. Скобки заключают в себе шаблон, содержащий список символов, которые могут соответствовать группе. В этом случае шаблон включает символы в диапазонах a-z и A-Z. Символ ^ в начале означает «не», поэтому этот шаблон соответствует любому одиночному символу, который не находится в диапазоне a-z или A-Z. Другими словами, он соответствует не-буквам. Последний параметр заменяет любой согласованный символ на «", поэтому результат содержит только буквы.