我可以在textBox中测试isLetter的子字符串吗?

时间:2009-07-06 13:42:26

标签: c# .net asp.net

我想确保八个字符代码中的前4个字母是一个字母。是否有功能,或者我必须自己制作。

6 个答案:

答案 0 :(得分:3)

你可以添加javascript / regex验证

正则表达式

  ^[a-zA-Z]{4}.*

答案 1 :(得分:1)

您应该使用regular expression validator来实现此目标。

答案 2 :(得分:1)

Char.IsLetter怎么样?

它有2个覆盖:一个用于传递一个字符,另一个用传递字符串和索引。

答案 3 :(得分:0)

AFAIK没有内置功能。根据用户文化,字母可能意味着不同的东西。如果您的意思是ASCII字母,您可以像这样测试:

bool IsASCIILetter(char letter) {
    return letter >= 65 && letter <= 90 && letter >= 97 && letter <= 122;
}

答案 4 :(得分:0)

如果是要验证的输入控件的内容,请使用RegularExpressionValidator

这种情况可能只是简单地使用RegEx,但对于更复杂的验证,我尝试避免使用RegExes,因为它们太复杂而无法调试。比我聪明的人说'我有一个问题,我用正则表达式解决了。现在我有两个问题'。即使您对正则表达式感到满意,维护代码的人也可能不是。

更明确的代码更易于阅读和维护:

bool IsValid (string code) {
    if (code.Length != 8)
        return false;

    for (int i = 0; i < 4; ++i) {
        if (!Char.IsLetter(code[i]))
            return false;
    }
    return true;
}

答案 5 :(得分:0)

2个选项:

选项1 - 在代码隐藏中检查它:

    if (txtBox1.Text.Length >= 4 && txtBox1.Text.ToCharArray().Take(4).All(c => char.IsLetter(c)))
    {
        // success
    }
    else
    {
        // validation failed
    }

您没有说明您是强制执行长度为8还是可选,高达 8.您可以相当轻松地添加此检查。

选项2 - 使用带有可选RequiredFieldValidator的RegularExpressionValidator。如果你决定走这条路线,你真的应该知道你想要允许最后4个字符的确切内容,因为下面这个例子允许任何东西并且只限制前4个字母。此外,如果您想强制执行8的长度,这也会有所不同。下面这个是强制性的;要使它可选8个字符,你会使用“[A-Za-z] {4}(。{4})?”代替。

<asp:TextBox ID="txtBox1" runat="server"></asp:TextBox>

<asp:RequiredFieldValidator ID="rfvtxtBox1" runat="server" ControlToValidate="txtBox1" ErrorMessage="txtBox1 is required!" Display="Dynamic">*</asp:RequiredFieldValidator>

<asp:RegularExpressionValidator ID="revtxtBox1" runat="server" ControlToValidate="txtBox1" ValidationExpression="[A-Za-z]{4}.{4}" ErrorMessage="First 4 characters must be a letter!" Display="Dynamic" />

如果您不想允许空白条目,则需要RequiredFieldValidator,因为仅使用RegularExpressionValidator不会阻止空白/空白条目。有关详细信息,请参阅my answer here