c# - 检查所有字母是小写还是大写
问题描述
基本上我只是想检查用户输入是全部大写还是小写。目前我的问题是代码每次迭代都返回true1或true2,如果输入都是大写的,那么第一个for循环会进入下一个循环,因为没有一个字母是小写的,所以返回false。对不起,如果这个问题的格式不正确,我很新。
namespace CheckifSameCase
{
class Program
{
static void Main(string[] args)
{
//Initialize user input as var "input".
string str = Console.ReadLine();
char[] characters = str.ToCharArray();
//This for loop iterates through the user input and checks if all letters are uppercase.
//if not all letters are uppercase then the loop breaks to the next loop.
for (int i = 0; i < characters.Length; i++)
{
if (char.IsUpper(characters[i]))
{
Console.WriteLine("True1");
}
else
{
break;
}
}
//This for loop checks for lowcase letters and returns false if all letters aren't lowercase.
for (int i = 0; i < characters.Length; i++)
{
if (char.IsLower(characters[i]))
{
Console.WriteLine("True2");
}
else
{
Console.WriteLine("False");
break;
}
}
}
}
}
解决方案
我不知道 C#,但这是一种方法。只需检查第一个字符是否大写所有其他字符都应为大写或打印错误。如果第一个字符是小写的,那么所有其他字符都应该是小写的,否则打印为 false。然后,如果您到达程序的末尾(没有返回),您可以查看它是全大写还是全小写并相应地打印。
bool isUpper = char.isUpper(characters[0]);
for(int i = 0; i < characters.Length; i++) {
if(isUpper != char.isUpper(characters[i])) {
Console.WriteLine("False");
return;
}
}
if(isUpper) {Console.WriteLine("True1");}
else {Console.WriteLine("True2");}