Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否允许用户只输入文本?_C# - Fatal编程技术网

C# 是否允许用户只输入文本?

C# 是否允许用户只输入文本?,c#,C#,如何使布尔语句只允许文本?我有这个代码只允许用户输入数字,但不知道如何做文本 bool Dest = double.TryParse(this.xTripDestinationTextBox.Text, out Miles); bool MilesGal = double.TryParse(this.xTripMpgTextBox.Text, out Mpg); bool PriceGal = double.TryParse(this.xTripPricepgTextBox.Text, o

如何使布尔语句只允许文本?我有这个代码只允许用户输入数字,但不知道如何做文本

 bool Dest = double.TryParse(this.xTripDestinationTextBox.Text, out Miles);
 bool MilesGal = double.TryParse(this.xTripMpgTextBox.Text, out Mpg);
 bool PriceGal = double.TryParse(this.xTripPricepgTextBox.Text, out Price);

您可以使用正则表达式,请浏览此处:

您可以使用正则表达式,请浏览此处:

更新:查看您的评论,我建议您阅读本文:


原始答案:最简单的方法是使用LINQ,至少如果您使用的是.NET 3.5:

bool isAllLetters = s.All(c => char.IsLetter(c));
在较旧的.NET版本中,您可以创建一个方法来执行此操作:

bool isAllLetters(string s)
{
    foreach (char c in s)
    {
        if (!char.IsLetter(c))
        {
            return false;
        }
    }
    return true;
}
也可以使用正则表达式。如果要允许使用Unicode中定义的任何字母,则可以使用以下正则表达式:

bool isOnlyLetters = Regex.IsMatch(s, @"^\p{L}+$");
如果要限制为A-Z,则可以使用以下选项:

bool isOnlyLetters = Regex.IsMatch(s, @"^[a-zA-Z]+$");

更新:查看您的评论,我建议您阅读本文:


原始答案:最简单的方法是使用LINQ,至少如果您使用的是.NET 3.5:

bool isAllLetters = s.All(c => char.IsLetter(c));
在较旧的.NET版本中,您可以创建一个方法来执行此操作:

bool isAllLetters(string s)
{
    foreach (char c in s)
    {
        if (!char.IsLetter(c))
        {
            return false;
        }
    }
    return true;
}
也可以使用正则表达式。如果要允许使用Unicode中定义的任何字母,则可以使用以下正则表达式:

bool isOnlyLetters = Regex.IsMatch(s, @"^\p{L}+$");
如果要限制为A-Z,则可以使用以下选项:

bool isOnlyLetters = Regex.IsMatch(s, @"^[a-zA-Z]+$");

你可以做几件事中的一件

  • 使用正则表达式检查字符串是否仅与“文本”的概念匹配
  • 编写一些代码,对照有效字符列表检查每个字符。甚至可以使用char.isleter()
  • 使用MaskedTextBox并设置自定义掩码,将输入限制为纯文本字符

  • 你可以做几件事中的一件

  • 使用正则表达式检查字符串是否仅与“文本”的概念匹配
  • 编写一些代码,对照有效字符列表检查每个字符。甚至可以使用char.isleter()
  • 使用MaskedTextBox并设置自定义掩码,将输入限制为纯文本字符

  • 您可以在按键事件中使用以下代码:

    if (!char.IsLetter(e.KeyChar)) {
    e.Handled = true;
    }
    

    您可以在按键事件中使用以下代码:

    if (!char.IsLetter(e.KeyChar)) {
    e.Handled = true;
    }
    

    我发现连接到文本框的文本更改事件并接受/拒绝更改是一个可接受的解决方案。“仅允许文本”是一个相当模糊的定义,但您也可以检查新添加的文本(下一个字符)是否为数字,并简单地拒绝所有数字/不允许的字符。这会让用户觉得他们只能输入字符和特殊字符(如点、问号等)


    我发现连接到文本框的文本更改事件并接受/拒绝更改是一个可接受的解决方案。“仅允许文本”是一个相当模糊的定义,但您也可以检查新添加的文本(下一个字符)是否为数字,并简单地拒绝所有数字/不允许的字符。这会让用户觉得他们只能输入字符和特殊字符(如点、问号等)


    你说的“文本”是什么意思?只有字母表中的字母?是的,这是强制用户只能输入他的名字和姓氏。如果名字包含空格、连字符或其他特殊字符,该怎么办?也许有些人的名字里有数字,谁知道…你说的“文本”是什么意思?只有字母表中的字母?是的,这是强制用户只能输入他的名字和姓氏。如果名字包含空格、连字符或其他特殊字符,该怎么办?甚至有些人的名字也有数字,谁知道……只有检查最后一个字符才能在字符串中插入不合格字符。在每个Twitter事件中验证整个字符串可能会更好。只有在字符串中插入不符合字符时,才检查最后一个字符是没有帮助的。验证每个TextChanged事件的整个字符串可能更好。这一个对我的解决方案最有效,但感谢所有的答案,伙计们,我非常感谢。@Michael,你看过MaskedTextBox了吗?这一个对我的解决方案最有效,但感谢所有的答案,伙计们,我非常感谢。@Michael,你有没有看那个戴面具的盒子?