且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何使用Excel正则表达式从字符串中提取广告尺寸

更新时间:2022-11-12 09:06:49

编辑:由于实际上不是下划线分隔,所以我们不能使用 Split .但是,我们可以遍历字符串并手动提取" #x#".我已经更新了代码以反映这一点,并验证了它可以成功工作.

Since it's not actually underscore delimited we can't use Split. We can however iterate over the string and extract the "#x#" manually. I have updated the code to reflect this and verified that it works successfully.

Public Function ExtractAdSize(ByVal arg_Text As String) As String

    Dim i As Long
    Dim Temp As String
    Dim Ad As String

    If arg_Text Like "*#x#*" Then
        For i = 1 To Len(arg_Text) + 1
            Temp = Mid(arg_Text & " ", i, 1)
            If IsNumeric(Temp) Then
                Ad = Ad & Temp
            Else
                If Temp = "x" Then
                    Ad = Ad & Temp
                Else
                    If Ad Like "*#x#*" Then
                        ExtractAdSize = Ad
                        Exit Function
                    Else
                        Ad = vbNullString
                    End If
                End If
            End If
        Next i
    End If

End Function

使用Select Case布尔逻辑而不是嵌套的If语句的同一功能的替代版本:

Alternate version of the same function using Select Case boolean logic instead of nested If statements:

Public Function ExtractAdSize(ByVal arg_Text As String) As String

    Dim i As Long
    Dim Temp As String
    Dim Ad As String

    If arg_Text Like "*#x#*" Then
        For i = 1 To Len(arg_Text) + 1
            Temp = Mid(arg_Text & " ", i, 1)

            Select Case Abs(IsNumeric(Temp)) + Abs((Temp = "x")) * 2 + Abs((Ad Like "*#x#*")) * 4
                Case 0: Ad = vbNullString       'Temp is not a number, not an "x", and Ad is not valid
                Case 1, 2, 5: Ad = Ad & Temp    'Temp is a number or an "x"
                Case 4, 6: ExtractAdSize = Ad   'Temp is not a number, Ad is valid
                           Exit Function
            End Select
        Next i
    End If

End Function