簡體   English   中英

像運算符一樣的可變長度

[英]Variable length like operator

我意識到這段代碼並不是很凌亂,因此可能不是必需的,但是有可能壓縮行

Select Case True
    Case Info.Feed Like "F#" Or Info.Feed Like "F##" Or Info.Feed like "F###"
        'stuff; Info is a class variable
    Case Else
        'there are more cases but this is all I need to keep things clear
End Select

變成沒有Or東西? 告訴Excel,當我說#時,這不一定表示一個數字嗎?

Info.Feed like "F*" And isnumeric(mid(Info.Feed,2))

這會抓住

F01
F100
F99999 

但是會忽略

F
FX
FX01
F01A
A01

如果要將其限制為F000至F999,請添加LEN

如果使用Like運算符並達到其極限,則可以在VBA中非常簡潔地使用正則表達式。 在您的情況下,使用F*將允許FXXXF12X等,我認為您不希望這樣做。

F#,F ##和F ###都說F后跟1到3位數字,可以在單個正則表達式中完成:

^F\d{1,3}$

這是字符串的開頭, F ,1-3位數字,字符串的結尾。

編碼:

Option Explicit

Public Sub Test()

    Dim objRegex As Object
    Dim InfoFeed As String: InfoFeed = "F123x"

    Set objRegex = CreateObject("VBScript.RegExp")
    objRegex.Pattern = "^F\d{1,3}$"

    If objRegex.Test(InfoFeed) Then
        Debug.Print "Do stuff"
    Else
        Debug.Print "Do other stuff"
    End If

End Sub

like "F*"可能與AND len(x)<=4 ,或者如果不取決於長度,則簡單地使用left(info.feed,1)="F"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM