检查字符串是否只包含字母表中的字母,而不是 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();
}
}
这应该可以完成工作:
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
}