3

我需要在 If 语句中比较 2 个变量,但如果除情况外一切都相同,我仍然希望它返回 true。我知道不能写这个,但这里是我想要做的事情的一种感觉:

If (str1=str2 matchcase:=false) then

有任何想法吗?谢谢

4

3 回答 3

7

If (lcase(str1)=lcase(str2)) then

于 2013-09-30T16:17:27.213 回答
5

虽然我更喜欢@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
于 2013-09-30T16:34:15.460 回答
3

如果你正在寻找最快的,你会想要使用 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 的结果相似。

于 2013-09-30T18:27:21.530 回答