输入必须为大写(首字母)和小写(其他)

时间:2019-03-29 11:46:08

标签: c# case-sensitive

我需要一些帮助来创建一个程序,该程序在 UPPER 情况下需要输入首字母,在 lower 情况下需要所有其他输入。

我试图编写一些代码,但似乎无法弄清楚。

编辑: 我认为你们中有些人不了解这个问题。我必须创建一个循环,要求用户从上至下输入第一个数字,如果不满足要求,则用户必须再次输入,直到第一个字母在上而其他字母在下。

var novaDrzava = new Država ();
Console.Write ("Vnesite ime (prva začetnica naj bo velika, ostale male): ");

novaDrzava.Ime = Console.ReadLine ();

var drzava = novaDrzava.Ime;
var inicialka = drzava.Substring (0);
var ostale = drzava.Substring (1, drzava.Length - 1);

for (int i = 0; i <= malecrke.Length; i++) {
    if (inicialka.Contains (velikecrke[i])) {
        if (ostale.Contains (malecrke[i])) {
            break;
        } else {
            Console.WriteLine ("Ponovno vnesite ime");
            novaDrzava.Ime = Console.ReadLine ();
        }
    }
}

5 个答案:

答案 0 :(得分:1)

如果我正确理解它,应该不难: 只需用

var firstletter = yourstring.Substring(0, 1);

其他一切

var everthingelse = yourstring.Substring(1);

firstletter = firstletter.ToUpper();
everthingelse = everthingelse.ToLower();

答案 1 :(得分:1)

您可能想研究正则表达式。像这样:

string inputOk = "Thisisatest";
string inputNok1 = "ThisisaTest";
string inputNok2 = "thisisatest";
bool resultOk = Regex.IsMatch(inputOk, "^[A-Z]{1}[a-z]+$");
bool resultNok1 = Regex.IsMatch(inputNok1, "^[A-Z]{1}[a-z]+$");
bool resultNok2 = Regex.IsMatch(inputNok2, "^[A-Z]{1}[a-z]+$");`

答案 2 :(得分:1)

static void Main(string[] args)
        {
            string inputValue = Console.ReadLine();

            bool isValid = true;
            foreach (char val in inputValue)
            {
                if (inputValue.First()==val && char.IsUpper(val))
                {
                  //do nothing.
                }
                else if(char.IsLower(val))
                {
                    // do nothing.
                }
                else
                {
                    isValid = false;
                    Console.WriteLine("Invalid input string");
                    Console.ReadLine();
                    break;
                }
            }

            if (isValid)
            {
                Console.WriteLine("Valid input string");
                Console.ReadLine();
            }

        }

答案 3 :(得分:0)

您可能正在寻找标题大小写,其中每个单词都以大写字母开头(例如John Smith)。如果是您的情况:

 // Normilize: turn modificators in diactritics (e.g. "Hašek")
 string drzava = Console.ReadLine().Normalize();

 if (string.Equals(drzava, CultureInfo.CurrentCulture.TextInfo.ToTitleCase(drzava))) {
   // Correct name in title case
 }

或者如果我们只想使用单个名称(例如John,而不是John Smith

 if (!string.IsNullOrEmpty(drzava) &&
      drzava.All(c => char.IsLetter(c)) &&
      string.Equals(drzava, CultureInfo.CurrentCulture.TextInfo.ToTitleCase(drzava))) {
   // Correct Name : Not empty, Letters only, Title Case
 } 

最后,您可以尝试正则表达式

using System.Text.RegularExpressions;

... 

//TODO: change "*" into "+" if you want at least one lowercase symbol 
if (Regex.IsMatch(drzava, @"^\p{Lu}\p{Ll}*$")) {
   // Correct Name : Starts from upper case contains zero or more lowercase
}

答案 4 :(得分:0)

replace_escaped