VB统计一段话中的大小写个数

2025-02-26 08:14:45
推荐回答(2个)
回答1:

常规思路是用循环加判断,但是这样效率不高。

我们可以借助于正则表达式引擎来实现,参考代码如下:

Sub Test()
    Const STR_TEST As String = "we are studying VB 课程!"
            
    MsgBox "小写字母数: " & CStr(Counter(STR_TEST, "[a-z]")) & vbNewLine & _
           "大写字母数: " & CStr(Counter(STR_TEST, "[A-Z]")) & vbNewLine & _
           "其他字符数: " & CStr(Counter(STR_TEST, "[^a-zA-Z]"))
End Sub

' 使用正则表达式对源字符串计数.
Public Function Counter(ByVal Source As String, _
                        ByVal Pattern As String) As Long
    
    Dim objRegExp As Object
    
    On Error Resume Next
    
    Set objRegExp = CreateObject("VBScript.RegExp")
    
    If Not (objRegExp Is Nothing) Then
        With objRegExp
            .Global = True
            .Multiline = True
            .IgnoreCase = False
            .Pattern = Pattern
            
            Counter = Len(Source) - Len(.Replace(Source, vbNullString))
        End With
        
        Set objRegExp = Nothing
    End If
End Function

运行结果:

回答2:

用len
这个代码就行了