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,这将非常有用。

请问,如何获得一个只删除字符串末尾空格的正则表达式,同时保持稳健的比较?谢谢你!非常感谢你,你让我打破了僵局。谢谢