在比较vbs中的两个字符串时,Trim函数不会删除字符串末尾的空格

new*_*new 2 vbscript spaces trim

我有一个简单的脚本,它需要两个字符串并进行比较.第一个在末尾有一个空格而第二个没有.

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
Run Code Online (Sandbox Code Playgroud)

我用这种方式使用这个函数:

s1=     SUCCESSFULLY CONNECTED
s2=     SUCCESSFULLY CONNECTED
result=compare(s1,s2)
Run Code Online (Sandbox Code Playgroud)

s1和s2之间的区别在于s1以单个空格结束,而s2在末尾没有任何空格.这就是我使用Trim函数忽略该空间的原因.尽管如此,对于s1和s2,我总是在对话框中得到消息"KO".我甚至改变了条件

If trim(str1)=trim(str2) Then
Run Code Online (Sandbox Code Playgroud)

但弹出窗口仍然返回"KO".这是一个美好的情况!

拜托,我已经厌倦了,希望你能帮助理解这种情况.先感谢您

Ekk*_*ner 5

VBScript Trim删除空格/空格,而不是其他类型的空格.当你处理.Run或者的输出时,你需要一个RegExp来清理带有前导/尾随vbTab,vbCrLf,...的字符串.Exec的.

演示片段:

>> 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
Run Code Online (Sandbox Code Playgroud)