VB.NET 中是否有 isAlpha 函数

Is there an isAlpha function in VB.NET

我有一个变量来保存 id

Dim empId as String

因此有效 ID 的格式为:

'the first character should be a letter [A-Z]
'the rest of the string are digits e.g M2895 would be a valid id

我想检查每个字符,看看它们是否符合正确的要求 ID

到目前为止,我已经遇到了 isNumeric() 函数。 VB.NET中是否有类似的函数来检查字符是字符串还是字母字符?

您可以使用 RegularExpressions 而不是手动检查字符串的每个字符:

Dim empId as String = "M2895"
If Regex.IsMatch(empId, "^[A-Z]{1}[0-9]+$") Then
    Console.WriteLine("Is valid ID")
End If

如果您需要函数 isAlpha,您也可以使用 RegularExpressions 创建此函数:

Private Function isAlpha(ByVal letterChar As String) As Boolean
    Return Regex.IsMatch(letterChar, "^[A-Z]{1}$")
End Function

为了完成,为了也支持爱沙尼亚字母表,您可以使用以下内容:

Dim empId as String = "Š2859"
If Regex.IsMatch(empId, "^[^\W\d_]{1}[0-9]+$") Then
    Console.WriteLine("Is valid ID")
End If

您可以使用适用于所有 Unicode 字符的函数

Char.IsLetter Method (String, Int32)
表示指定字符串中指定位置的字符是否属于Unicode字母。

Char.IsDigit Method (Char)
指示指定的 Unicode 字符是否属于十进制数字。

所以你最终得到了这样的验证

Public Function IsValid(id As String)
    If Char.IsLetter(id, 0) = False Then
        Return False
    End If

    If id.Skip(1).All(Char.IsDigit) = False Then
        Return False
    End If   

    Return True   
End Function

这是我的 isAlpha 函数,回答了这个问题的标题:

Public Shared Function isAlpha(ByVal s as String) as Boolean
    if s is Nothing then return False
    For Each c As Char in s
        If not Char.IsLetter(c) then return False
    Next
    return True
End Function

但是,要回答问题的 body,这是我的 mod @Fabio 的回答:

Public Function isMyAlphaCode(id As String) as Boolean
    if id is Nothing then return False
    if id.length < 2 then return False
    If Char.IsLetter(id, 0) Then
        Return False
    End If

    If id.Skip(1).All(Char.IsDigit) Then
        Return False
    End If   

    Return True   
End Function