Trim function does not remove spaces at end of a string while comparing two strings in vbs

戏子无情 提交于 2019-12-07 23:38:37

问题


I have a simple script which takes two strings and compare them. The first one has a space at the end and the second does not have that.

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

I use this function in this way:

s1=     SUCCESSFULLY CONNECTED
s2=     SUCCESSFULLY CONNECTED
result=compare(s1,s2)

The difference between s1 and s2 is that s1 ends with a single space while s2 does not have any space at the end. This why I use the Trim function to ignore that space. Despite that, for s1 and s2, I always get the message "KO" in dialog box. I have even changed the condition by

If trim(str1)=trim(str2) Then

But popup is still returned "KO". This is a wonderful situation!

Please, I'm tired of that and hope that you help understand this situation. Thank you in advance


回答1:


VBScript's Trim removes spaces/blanks, not other kinds of whitespace. You'll need a RegExp to clean strings with leading/trailing vbTab, vbCrLf, ... which you often get, when you process the output of .Run or. Exec.

Demo snippet:

>> 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



回答2:


You might like to try this:

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

Note that the trailing vbTab added to str1 is now removed simply by removing the last character.

This is useful if you want to preserve the inner VbTabs if you were going to use them to split the string into an array, for example.



来源:https://stackoverflow.com/questions/17675385/trim-function-does-not-remove-spaces-at-end-of-a-string-while-comparing-two-stri

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!