【问题标题】:Trim function does not remove spaces at end of a string while comparing two strings in vbs在比较 vbs 中的两个字符串时,修剪函数不会删除字符串末尾的空格
【发布时间】:2013-07-16 11:31:21
【问题描述】:

我有一个简单的脚本,它接受两个字符串并比较它们。第一个在末尾有一个空格,第二个没有。

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 结尾没有空格。这就是为什么我使用 Trim 函数来忽略该空间的原因。 尽管如此,对于 s1 和 s2,我总是在对话框中收到消息“KO”。我什至改变了条件

If trim(str1)=trim(str2) Then

但弹出窗口仍然返回“KO”。这是一个美妙的情况!

拜托,我已经厌倦了,希望你能帮助理解这种情况。 提前谢谢你

【问题讨论】:

    标签: vbscript trim spaces


    【解决方案1】:

    VBScript 的Trim 删除空格/空格,而不是其他类型的空格。您需要一个正则表达式来清理带有前导/尾随 vbTab、vbCrLf、...的字符串,当您处理 .Run 或的输出时,您经常会得到这些字符串。执行。

    演示sn-p:

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

    你可能想试试这个:

    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(如果您打算使用它们将字符串拆分为数组),这将非常有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-11
      • 1970-01-01
      • 2021-09-16
      • 1970-01-01
      • 2023-01-04
      • 1970-01-01
      • 2015-10-10
      相关资源
      最近更新 更多