#c# #string #uppercase #lowercase
Вопрос:
Я пытаюсь проверить в C#, содержит ли вводимая мной буква прописную или строчную букву, и указать, сколько существует строчных и прописных букв. «Ввод» — это длина строки ввода, который вы вводите, а «буквы» — это строковый массив букв a — z в нижнем регистре.
Первые два оператора проверяют, содержит ли «Ввод» строчную букву, и еще, если «Ввод» содержит строчную букву, они оба, похоже, работают, но по какой-то причине он не может проверить их обоих: последний оператор else if проверяет, содержит ли ввод по крайней мере 1 прописную и 1 строчную буквы:
for(int i = 0; i < letters.Length; i )
{
if(Input.Contains(letters[i].ToLower()))
{
WriteLine("Lowercase");
}
else if (Input.Contains(letters[i].ToUpper()))
{
WriteLine("Uppercase");
{
else if (Input.Contains(letters[i].ToLower()) amp;amp;
Input.Contains(letters[i].ToUpper()))
{
WriteLine("Uppercase and Lowercase");
}
}
Комментарии:
1. вместо такой проверки вы можете использовать символы ascii. так будет лучше. поделитесь своим примером входной строки.
2. Что-То Вроде «Привет, Мир»
3. Ввод и буквы одинаковые или разные ?
4. Ввод будет тем, что вы введете, а буквы-это массив, содержащий буквы от a до z в виде строки
5.
var lowerCount = letters.Count(char.IsLower);
? Я предполагаю, что вы можете выяснить остальное
Ответ №1:
Безусловно, есть лучшие способы сделать это. Но причина, по которой то, что у вас сейчас есть, не работает, заключается в том, что если последнее условие когда-либо будет истинным, то таким же будет и первое условие. Поэтому if
в этом случае всегда будет выполняться первый блок. Чтобы исправить то, что у вас есть, вы должны переместить последнее условие на первое:
for(int i = 0; i < letters.Length; i )
{
if (Input.Contains(letters[i].ToLower()) amp;amp;
Input.Contains(letters[i].ToUpper()))
{
WriteLine("Uppercase and Lowercase");
}
else if (Input.Contains(letters[i].ToUpper()))
{
WriteLine("Uppercase");
{
else if(Input.Contains(letters[i].ToLower()))
{
WriteLine("Lowercase");
}
}
Ответ №2:
Вы можете написать метод, который повторяет символы в строке и поддерживает счетчик символов верхнего/нижнего регистра char.IsUpper
, используя методы char.IsLower
и.
(int,int) CheckCase(string value)
{
var countUpper = 0;
var countLower = 0;
foreach(var c in value)
{
if(char.IsUpper(c))
{
countUpper ;
}
else if(char.IsLower(c))
{
countLower ;
}
}
return (countUpper,countLower);
}
Как уже отмечалось, для этого потребуется всего одна итерация символов в строке.
Теперь вы можете использовать этот метод как
var (countUpper,countLower) = CheckCase("SampleString");
С учетом количества прописных и строчных символов в руке теперь вы можете реализовать свою логику отображения