[英]I am trying to check if my Input has a lower or uppercase letter in it:
我正在嘗試檢查 C# 如果我輸入的輸入有大寫字母或小寫字母,並指定有多少個小寫字母和大寫字母。 'Input' 是您輸入的字符串長度,'letters' 是字符串數組字母 a - z 小寫。
前兩個語句檢查“Input”是否包含小寫字母,如果“Input”包含小寫字母,它們似乎都有效,但由於某種原因它不能同時檢查它們:最后的 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()) &&
Input.Contains(letters[i].ToUpper()))
{
WriteLine("Uppercase and Lowercase");
}
}
您可以編寫一個方法來迭代字符串中的字符,並使用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");
掌握了大寫和小寫字符的數量后,您現在可以實現顯示邏輯
當然有更好的方法來做到這一點。 但是你目前所擁有的不起作用的原因是因為如果最后一個條件永遠為真,那么第一個條件也是如此。 所以第一個if
塊將始終是在這種情況下執行的塊。 要修復你所擁有的,你應該將最后一個條件移到第一個:
for(int i = 0; i < letters.Length; i++)
{
if (Input.Contains(letters[i].ToLower()) &&
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");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.