Vbscript 在vbs中比较两个字符串时,Trim函数不会删除字符串末尾的空格
我有一个简单的脚本,它接受两个字符串并比较它们。第一个在末端有一个空格,第二个没有Vbscript 在vbs中比较两个字符串时,Trim函数不会删除字符串末尾的空格,vbscript,trim,spaces,Vbscript,Trim,Spaces,我有一个简单的脚本,它接受两个字符串并比较它们。第一个在末端有一个空格,第二个没有 Function compare(str1,str2) dim a If strComp(trim(str1),trim(str2))=0 Then msgbox "OK" a=1 Else msgbox "KO" a=0 End If compare=a End Function 我以这种方式使用此功能: s1= SUCCESSF
Function compare(str1,str2)
dim a
If strComp(trim(str1),trim(str2))=0 Then
msgbox "OK"
a=1
Else
msgbox "KO"
a=0
End If
compare=a
End Function
我以这种方式使用此功能:
s1= SUCCESSFULLY CONNECTED
s2= SUCCESSFULLY CONNECTED
result=compare(s1,s2)
s1和s2之间的区别在于,s1以单个空格结尾,而s2在结尾处没有任何空格。这就是为什么我使用修剪功能来忽略该空间。
尽管如此,对于s1和s2,我总是在对话框中看到消息“KO”。我甚至改变了条件
If trim(str1)=trim(str2) Then
但弹出窗口仍然返回“KO”。这是一个美妙的局面
拜托,我已经厌倦了,希望你能帮助我理解这种情况。
提前感谢您VBScript的
Trim
删除空格/空格,而不是其他类型的空格。您需要一个RegExp来清理带有前导/尾随vbTab、vbCrLf等的字符串。。。当您处理.Run或的输出时,通常会得到。执行官
演示片段:
>> s1 = "abc" & vbCrLf & " "
>> s2 = "abc"
>> WScript.Echo Len(s1), Len(s2)
>> set r = New RegExp
>> r.Global = True
>> r.Pattern = "^\s+|\s+$"
>> s1 = r.Replace(s1, "")
>> s2 = r.Replace(s2, "")
>> WScript.Echo Len(s1), Len(s2)
>> WScript.Echo CStr(s1 = s2)
>>
6 3
3 3
True
您可能希望尝试以下方法:
Dim str1, str2
str1 = "help"
str2 = "Me"
WScript.Echo str1 & str2
str1 = str1 & vbTab
WScript.Echo str1 & str2
WScript.Echo len(str1) & " " & len(str2)
If Right(str1,1) = vbTab Then
WScript.Echo left(str1,Len(str1) - 1) & str2
Else
WScript.echo "Oops"
End If
请注意,现在只需删除最后一个字符,即可删除添加到str1的尾随vbTab
例如,如果要使用内部VBTab将字符串拆分为数组,则如果要保留这些内部VBTab,这将非常有用。请问,如何获得一个只删除字符串末尾空格的正则表达式,同时保持稳健的比较?谢谢你!非常感谢你,你让我打破了僵局。谢谢