我需要在 If 语句中比较 2 个变量,但如果除情况外一切都相同,我仍然希望它返回 true。我知道不能写这个,但这里是我想要做的事情的一种感觉:
If (str1=str2 matchcase:=false) then
有任何想法吗?谢谢
If (lcase(str1)=lcase(str2)) then
虽然我更喜欢@mr.Reband 的答案,但你仍然可以参考这个使用StrComp
函数的替代方案。
Sub test()
Dim str1 As String
Dim str2 As String
str1 = "test"
str2 = "Test"
MsgBox StrComp(str1, str2, vbTextCompare)
'Return Values
'
'The StrComp function has the following return values:
'
'If StrComp returns
'string1 is less than string2 -1
'string1 is equal to string2 0
'string1 is greater than string2 1
'string1 or string2 is Null Null
End Sub
如果你正在寻找最快的,你会想要使用 StrComp()
StrComp 将进行多项测试以避免必须实际比较字符串或整个字符串,从而在字符串不同时使其更快。如果您确实期望有很多通用值,则可以避免使用 StrComp,但在大多数情况下它会更快。
100M comparisons with same phrase but different case:
LCase = 20 seconds
StrComp = 23 seconds *This is a rare case
100M comparisons with different phrase but same length
LCase = 20 seconds
StrComp = 9 seconds
100M comparisons with different phrase and different length
LCase = 25 seconds
StrComp = 9 seconds
注意:字符串的长度会改变结果。例如,在最后一个测试中,LCase 比其他测试花费的时间更长,因为我将其中一个字符串的长度加倍。这减慢了 LCase 而不是 StrComp。
注 2:LCase 和 UCase 的结果相似。