我需要在If语句中比较2变量,但我仍然希望它重新生成如果除了大小写之外的所有内容都是相同的。我知道不能写这个,但这里是我想要做的事情:
If (str1=str2 matchcase:=false) then
有什么想法吗? 感谢
答案 0 :(得分:7)
If (lcase(str1)=lcase(str2)) then
答案 1 :(得分:3)
虽然我更喜欢@ 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
答案 2 :(得分:2)
如果您正在寻找最快的,那么您将需要使用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具有相似的结果。