.net 我可以测试字符串的前四个字符是否是字母吗?

wswtfjt7  于 2023-03-09  发布在  .NET
关注(0)|答案(6)|浏览(123)

我想确保八个字符代码中的前四个字母是字母。
有什么功能吗,还是我自己做?

qgelzfjb

qgelzfjb1#

您可以像这样添加javascript/regex验证:

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

6g8kf2rb3#

AFAIK没有内置函数。根据用户区域性,* 字母 * 可能表示不同的内容。如果您表示ASCII字母,则可以如下测试:

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

r8uurelv4#

Char.IsLetter怎么样?
它有2个超控:一个是传入char,另一个是传入string和index。

cwxwcias

cwxwcias5#

如果要验证的是输入控件的内容,请使用RegularExpressionValidator
这种情况可能很简单,只需使用RegEx,但对于更复杂的验证,我尽量避免使用RegEx,因为它们太复杂而无法调试。正如比我聪明的人所说:“我以前用正则表达式解决了一个问题。现在我有两个问题。"即使您对正则表达式很熟悉,维护您代码的人也可能不太熟悉。
更显式的代码更易于阅读和维护:

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;
}
3ks5zfa0

3ks5zfa06#

2个选项:

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

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

您没有说明是否强制长度为8,或者它是可选的,并且 * 最多 * 8。您可以相当容易地添加此检查。

选项2-将RegularExpressionValidator与可选RequiredFieldValidator一起使用。如果您决定使用此方法,则确实应该确切地知道最后4个字符允许的内容,因为下面的示例允许任何内容,并且仅将前4个字符限制为字母。此外,同样,如果您希望强制长度为8或不强制长度为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本身并不能阻止空白条目。

相关问题