检查字符串是否只包含字母表中的字母,而不是 C# 中的数字或其他内容

本文关键字:数字 其他 是否 字符串 包含 字母表 检查 | 更新日期: 2023-09-27 18:35:24

我有一个问题。我在网上研究过它,当然还有堆栈溢出上的搜索功能。我还发现了一些类似的问题,但它们要么是另一种编程语言,要么不是我想做的。所以这是我的详细问题:

我正在创建一个简单的控制台刽子手游戏(我是初学者)。我只是自己做这件事,因为我认为如果我自己做,我会学到最多的东西。无论如何,我要求用户提供他的话并将其保存到变量中。我也把它做成大写。现在我想检查这个词是否只包含字母表中的有效字母。比我想把它放在一个 if 条件下,这样如果他输入例如一个数字,他就会再次被问到。

但我不知道该怎么做?我尝试了使用 tryparse 方法并包含,但我无法找到解决方案。所以我好心地问你怎么做?

我的代码:

class Hangman
{
    private string enteredWord;
    private char guessedLetter;

    public void Start()
    {
        enteredWord = AskUserForWord();
        Console.WriteLine(enteredWord);
        Console.ReadLine();
    }
    private string AskUserForWord()
    {

        Console.WriteLine("Bitte gib ein Wort ein das es zu erraten gilt. Sag deinem Mitspieler er soll weg sehen: ");
        string word = ToUpper(Console.ReadLine());
        if ()
        return word;
    }

    private string ToUpper(string word)
    {
        return word.ToUpper();
    }
}

检查字符串是否只包含字母表中的字母,而不是 C# 中的数字或其他内容

这应该可以完成工作:

bool result = input.All(Char.IsLetter);

还有一个正则表达式解决方案:

Regex.IsMatch(theString, @"^['p{L}]+$");

Char.IsLetter是更好的解决方案,因为它将任何语言字母都算作一个字母。这个正则表达式也会计算它们,但它看起来仍然更紧凑 IsLetter

First reference system.linq:

using System.Linq;

然后修改您的AskUserForWord()函数:

while (true)
{
    Console.WriteLine("Bitte gib ein Wort ein das es zu erraten gilt. Sag deinem Mitspieler er soll weg sehen: ");
   string word = Console.ReadLine().ToUpper();
   if (word.All(c => char.IsLetter(c))
       return word;
   Console.WriteLine("Also bitte, nur Buchstaben sind hier erlaubt!");
}

您可以使用正则表达式。

对于字母表,

Regex.IsMatch(word, @"^[a-zA-Z]+$");

可以用这个来检查。

bool isLettersOnly = !word.Any(c => !char.IsLetter(c));
阅读正

则表达式(又名正则表达式),它们非常适合准确描述您希望输入的方式,在您的情况下,它将是这样的:

Regex(@"^[a-zA-Z]*");

这意味着只接受由字母字符组成的字符串。

看看这个例子 https://msdn.microsoft.com/en-US/library/3Y21T6Y4(v=vs.110).aspx了解如何使用它。

您也可以

尝试使用正则表达式。

Match match = Regex.Match("Testing a valid input ", @"(?i)^[a-z]+");
            if (match.Success)
            {
                //validation passed
            }