输入必须是大写(第一个字母)和小写(其他)

问题描述 投票:1回答:5

我需要一些帮助来创建一个程序,需要输入大写字母的首字母和小写的所有其他字母。

我试着编写一些代码,但我似乎无法弄明白。

编辑:我想你有些人不明白这个问题。我必须创建一个循环,要求用户在上部输入第一个数字,在下部输入其他数字,如果不满足要求,用户必须再次输入,直到第一个字母为高位而其他字母为低。

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 ();
        }
    }
}
c# case-sensitive
5个回答
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]+$");`

1
投票

如果我理解正确,那应该不难:只需带上第一个字母即可

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

其他一切

var everthingelse = yourstring.Substring(1);

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

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();
            }

        }

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
}

0
投票
private static string CapitaliseFirstLetter(string str)
    {
        var Ustr = string.Empty;
        if (!String.IsNullOrEmpty(str))
        {
            Ustr = char.ToUpper(str.First()) + str.Substring(1).ToLower();
        }

        return Ustr;
    }
© www.soinside.com 2019 - 2024. All rights reserved.