如果字符串只包含字母表中的字母,而不包含数字或C#中的其他内容,请检查该字符串?
我有个问题。我在网上研究过,当然还有stackoverflow的搜索功能。我还发现了一些类似的问题,但它们要么是在另一种编程语言中,要么不是我想要做的。 下面是我的详细问题: 我正在创建一个简单的控制台刽子手游戏(我是初学者)。我只是一个人做这件事,因为我认为如果我自己做的话,我学到的最多。无论如何,我要求用户输入他的单词并将其保存到变量中。我也把它改成大写。 现在我想检查这个单词是否只包含字母表中的有效字母。 然后我想把它放在一个if条件下,这样他会再次被询问是否输入了一个数字 但我不知道怎么做?我用tryparse方法试过,但没有找到解决办法。所以我想问你怎么做 我的代码:如果字符串只包含字母表中的字母,而不包含数字或C#中的其他内容,请检查该字符串?,c#,string,C#,String,我有个问题。我在网上研究过,当然还有stackoverflow的搜索功能。我还发现了一些类似的问题,但它们要么是在另一种编程语言中,要么不是我想要做的。 下面是我的详细问题: 我正在创建一个简单的控制台刽子手游戏(我是初学者)。我只是一个人做这件事,因为我认为如果我自己做的话,我学到的最多。无论如何,我要求用户输入他的单词并将其保存到变量中。我也把它改成大写。 现在我想检查这个单词是否只包含字母表中的有效字母。 然后我想把它放在一个if条件下,这样他会再次被询问是否输入了一个数字 但我不知道怎么
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();
}
}
第一参考系.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!");
}
第一参考系.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!");
}
可以用这个来检查
bool isLettersOnly = !word.Any(c => !char.IsLetter(c));
可以用这个来检查
bool isLettersOnly = !word.Any(c => !char.IsLetter(c));
这应该可以做到:
bool result = input.All(Char.IsLetter);
还有一个正则表达式解决方案:
Regex.IsMatch(theString, @"^[\p{L}]+$");
Char.isleter是更好的解决方案,因为它将任何语言字母都视为字母。这个正则表达式也会对它们进行计数,但它看起来更紧凑,使用Isleter应该可以:
bool result = input.All(Char.IsLetter);
还有一个正则表达式解决方案:
Regex.IsMatch(theString, @"^[\p{L}]+$");
Char.isleter是更好的解决方案,因为它将任何语言字母都视为字母。这个正则表达式也会对它们进行计数,但它看起来更紧凑,使用IsLetter阅读正则表达式又名正则表达式,它们有助于准确描述您希望输入的内容,在您的情况下,它将类似于:
Regex(@"^[a-zA-Z]*");
这意味着只接受由字母字符组成的字符串
看看这个例子,了解如何使用它。阅读Regex又名正则表达式,它们有助于准确描述您希望输入的内容,在您的情况下,它将类似于:
Regex(@"^[a-zA-Z]*");
这意味着只接受由字母字符组成的字符串
查看此示例以了解如何使用它。您也可以尝试使用正则表达式
Match match = Regex.Match("Testing a valid input ", @"(?i)^[a-z]+");
if (match.Success)
{
//validation passed
}
您也可以尝试使用正则表达式
Match match = Regex.Match("Testing a valid input ", @"(?i)^[a-z]+");
if (match.Success)
{
//validation passed
}
您可以使用正则表达式 对于字母表
Regex.IsMatch(word, @"^[a-zA-Z]+$");
您可以使用正则表达式 对于字母表
Regex.IsMatch(word, @"^[a-zA-Z]+$");
我想这应该可以用
word.All(c=>char.isleter(c))
我注意到了德语消息。你是否意识到德语字母表和英语字母表不一样,很多人认为你想要的是英语字母表?你想接受德语字母表中的所有字符,或者甚至是其他字母表中的字符吗?你是一个幸运的家伙,7个不同的人向你建议了基本相同的解决方案!:)谢谢你的帮助:)我想这应该可以用word.All(c=>char.isleter(c))
我注意到了这个德语消息。你是否意识到德语字母表和英语字母表不一样,很多人认为你想要的是英语字母表?你想接受德语字母表中的所有字符,或者甚至是其他字母表中的字符吗?你是一个幸运的家伙,7个不同的人向你建议了基本相同的解决方案!:)谢谢你的帮助:)嗨,谢谢你的意见。All()对我来说是完美的解决方案。我实现了它,它工作得很好:)很高兴它能帮助您自由地将其标记为答案,这样您就可以让其他观众知道这对您有帮助了。谢谢您的输入。All()是我的完美解决方案。我实现了它,它工作得很好:)很高兴它能帮助您自由地将它标记为一个答案,这样您就可以让其他观众知道这有助于您解决问题了。嗨,谢谢您提供了这个解决方案。我现在有如下内容:私有字符串AskUserForWord(){while(true){Console.WriteLine(“bite gib ein Wort ein das es zu erraten gilt.Sag deinem Mitspieler er soll weg sehen:”);字符串word=ToUpper(Console.ReadLine());bool result=word.All(Char.isleter);if(result){return word;}}}但是我不理解你的解决方案。为什么``if(word.All(c=>Char.isleter(c))``?嗨,谢谢你提供了这个解决方案。我现在有了如下内容:私有字符串AskUserForWord(){while(true){Console.WriteLine(“bite gib ein Wort ein das es zu erraten gilt.Sag deinem Mitspieler er soll weg sehen:”);string word=ToUpper(Console.ReadLine());bool result=word.All(Char.isleter);if(result){return word;}}但我不明白你的解决方案。为什么``if(word.All(c=>char.isleter(c))``?