在VBA中,测试一个字符串是否以子字符串开头的最直接的方法是什么? Java有startsWith
。是否有VBA等价物?
答案 0 :(得分:110)
有几种方法可以做到这一点:
您可以使用InStr
内置函数来测试String是否包含子字符串。 InStr
将返回第一个匹配的索引,或者0.因此,您可以通过执行以下操作来测试String是否以子字符串开头:
If InStr(1, "Hello World", "Hello W") = 1 Then
MsgBox "Yep, this string begins with Hello W!"
End If
如果InStr
返回1
,则字符串(“Hello World”)以子字符串(“Hello W”)开头。
您还可以使用like
比较运算符以及一些基本模式匹配:
If "Hello World" Like "Hello W*" Then
MsgBox "Yep, this string begins with Hello W!"
End If
在此,我们使用星号(*)来测试String是否以我们的子字符串开头。
答案 1 :(得分:32)
根据declaration and description of the startsWith
Java function来判断,在VBA中实施它的“最直接的方法”可能是Left
:
Public Function startsWith(str As String, prefix As String) As Boolean
startsWith = Left(str, Len(prefix)) = prefix
End Function
或者,如果您希望偏移参数可用,请Mid
:
Public Function startsWith(str As String, prefix As String, Optional toffset As Integer = 0) As Boolean
startsWith = Mid(str, toffset + 1, Len(prefix)) = prefix
End Function
答案 2 :(得分:2)
已经给出了最好的方法,但为什么不看看其他一些方法来获得乐趣呢?警告:这些是更昂贵的方法,但也适用于其他情况。
昂贵的正则表达式方法和以 ^ 运算符开头的 css 属性选择器
Option Explicit
Public Sub test()
Debug.Print StartWithSubString("ab", "abc,d")
End Sub
正则表达式:
Public Function StartWithSubString(ByVal substring As String, ByVal testString As String) As Boolean
'required reference Microsoft VBScript Regular Expressions
Dim re As VBScript_RegExp_55.RegExp
Set re = New VBScript_RegExp_55.RegExp
re.Pattern = "^" & substring
StartWithSubString = re.test(testString)
End Function
以运算符开头的 CSS 属性选择器
Public Function StartWithSubString(ByVal substring As String, ByVal testString As String) As Boolean
'required reference Microsoft HTML Object Library
Dim html As MSHTML.HTMLDocument
Set html = New MSHTML.HTMLDocument
html.body.innerHTML = "<div test=""" & testString & """></div>"
StartWithSubString = html.querySelectorAll("[test^=" & substring & "]").Length > 0
End Function