C# проверяет, содержит ли вход только строчные буквы az
Я застрял на задаче, пытаясь напечатать слова, которые содержат только строчные буквы az. Я уже удалил введенную строку, если она содержит любое число 0-9 и если она содержит заглавную букву:
String[] textParts;
textParts = text.Split(delimChars);
for (int i = 0; i < textParts.Length; i++) //adds s to words list and checks for capitals
{
String s = textParts[i];
bool valid = true;
foreach (char c in textParts[i])
{
if (char.IsUpper(c))
{
valid = false;
break;
}
if (c >= '0' && c <= '9')
{
valid = false;
break;
}
if (char.IsPunctuation(c))
{
valid = false;
break;
}
}
if (valid) pageIn.words.Add(s);
Это мой код до сих пор. Последняя часть, которую я пытаюсь проверить, чтобы увидеть, содержит ли слово пунктуацию (она не работает), есть ли более простой способ сделать это и как заставить работать последнюю часть моего кода?
PS Я не очень доволен использованием Regex.
Большое спасибо, Элли
3 ответа
Без регулярного выражения вы можете использовать LINQ (может быть менее производительным)
bool isOnlyLower = s.Count(c => Char.IsLower(c)) == s.Length;
Count получит количество символов, которые находятся ниже в следующей строке. Если она соответствует длине строки, строка состоит только из строчных букв.
var regex = new Regex("^[a-z]+$");
if (!regex.IsMatch(input))
{
// is't not only lower case letters, remove input
}
Я не уверен, правильно ли я понял ваш вопрос, но разве не должна работать следующая?
for (int i = 0; i < textParts.Length; i++) //adds s to words list and checks for capitals
{
String s = textParts[i];
if(s.Equals(s.ToLower()))
{
// string is all lower
}
}