Проверка того, что строка содержит только буквы в C #
У меня есть строка ввода, и я хочу проверить, что она содержит:
- Только буквы или
- Только буквы и цифры или
- Только буквы, цифры или символ подчеркивания
Чтобы уточнить, у меня есть 3 разных случая в коде, каждый из которых требует различной проверки. Каков самый простой способ достичь этого в C #?
- Количество слов в строке Swift для вычисления количества слов
- Как преобразовать целое число цвета в шестнадцатеричную строку в Android?
- C # разделите строку, но сохраните раздельные символы / разделители
- Regex.IsMatch vs string.Contains
- Макрос для конкатенации двух строк в C
- Вставка символа в определенном месте в строке
- Обратный String C ++ с использованием массива char
- Неустранимая ошибка: неверный макет java.lang.String по значению
- Записывать особые символы в строке
- Как реализуется class StringBuilder? Внутренне ли он создает новые строковые объекты каждый раз, когда мы добавляем?
- Почему «a»! = «A» в C?
- Как заменить несколько пробелов на одно место в C #?
- Цитирование обратных косых черт в строковых литералах Python
Только буквы:
Regex.IsMatch(input, @"^[a-zA-Z]+$");
Только буквы и цифры:
Regex.IsMatch(input, @"^[a-zA-Z0-9]+$");
Только буквы, цифры и символ подчеркивания:
Regex.IsMatch(input, @"^[a-zA-Z0-9_]+$");
bool result = input.All(Char.IsLetter); bool result = input.All(Char.IsLetterOrDigit); bool result = input.All(c=>Char.IsLetterOrDigit(c) || c=='_');
Только буквы:
Regex.IsMatch(theString, @"^[\p{L}]+$");
Письма и номера:
Regex.IsMatch(theString, @"^[\p{L}\p{N}]+$");
Буквы, цифры и символ подчеркивания:
Regex.IsMatch(theString, @"^[\w]+$");
Обратите внимание, что эти шаблоны также соответствуют международным символам (в отличие от использования конструкции az
).
Для тех из вас, кто предпочел бы не идти с Regex и находится на платформе .NET 2.0 (AKA no LINQ):
Только буквы:
public static bool IsAllLetters(string s) { foreach (char c in s) { if (!Char.IsLetter(c)) return false; } return true; }
Только цифры:
public static bool IsAllDigits(string s) { foreach (char c in s) { if (!Char.IsDigit(c)) return false; } return true; }
Только цифры или письма:
public static bool IsAllLettersOrDigits(string s) { foreach (char c in s) { if (!Char.IsLetterOrDigit(c)) return false; } return true; }
Только цифры или буквы или подчеркивания:
public static bool IsAllLettersOrDigitsOrUnderscores(string s) { foreach (char c in s) { if (!Char.IsLetterOrDigit(c) && c != '_') return false; } return true; }
Я считаю хорошим примером использования регулярных выражений:
public bool IsAlpha(string input) { return Regex.IsMatch(input, "^[a-zA-Z]+$"); } public bool IsAlphaNumeric(string input) { return Regex.IsMatch(input, "^[a-zA-Z0-9]+$"); } public bool IsAlphaNumericWithUnderscore(string input) { return Regex.IsMatch(input, "^[a-zA-Z0-9_]+$"); }
Вы можете зацикливаться на символах строки и проверять с помощью метода Char Method IsLetter, но вы также можете сделать трюк, используя метод String IndexOfAny для поиска других символов, которые не должны находиться в строке.
Итерации по строкам символов и использование функций «Char», называемых «IsLetter» и «IsDigit».
Если вам нужно что-то более конкретное – используйте class Regex.
Если вы новичок, то вы можете взять ссылку из моего кода. Что я сделал, это поставить чек, чтобы я мог получить только алфавиты и пробелы! Вы можете повторить цикл for после второго оператора if, чтобы снова подтвердить строку
bool check = false; Console.WriteLine("Please Enter the Name"); name=Console.ReadLine(); for (int i = 0; i < name.Length; i++) { if (name[i]>='a' && name[i]<='z' || name[i]==' ') { check = true; } else { check = false; } } if (check==false) { Console.WriteLine("Enter Valid Value"); name = Console.ReadLine(); }