【问题标题】:Input string was not in a correct format when doing string comparison进行字符串比较时输入字符串的格式不正确
【发布时间】:2016-05-09 22:16:47
【问题描述】:

我正在尝试评估用户帐户是否等于某个字符串,它不会继续。例如,如果用户帐户是 AMTEST 或 PMTEST,则它不执行 if 语句中的代码。使用下面的代码,我收到“输入字符串格式不正确”的错误。

我的语法有问题吗?

If UserAccount <> "AMTEST" Or "PMTEST" Or "TESTUSER" Then
    ' do something
End If

【问题讨论】:

    标签: asp.net vb.net


    【解决方案1】:

    你必须使用这个语法:

    If UserAccount <> "AMTEST" AndAlso UserAccount <> "PMTEST" AndAlso UserAccount <> "TESTUSER" Then
    
    End If
    

    这种方法更易于阅读和维护:

    Dim testAccs = { "AMTEST", "PMTEST", "TESTUSER" }
    If Not testAccs.Contains( UserAccount ) Then
    
    End If
    

    【讨论】:

    • 谢谢,现在我没有收到错误,但由于某种原因它仍在执行 if 语句中的代码 if UserAccount = "AMTEST" 不应该不执行吗?
    • @user1342164:请注意,在您发表评论之前,我已经编辑了我的答案。您确定没有空格或其他不可见字符,或者它实际上是 Amtest 而不是 AMTEST
    【解决方案2】:

    您必须评估语句的每个部分。 if 你写的内容基本上是“如果 UserAccount 的值不是 'AMTEST' 或者如果字符串 'PMTEST' = true 或者如果 'TESTUSER' = true”

    正确的做法是:

    If UserAccount <> "AMTEST" Or UserAccount <> "PMTEST" Or UserAccount <> "TESTUSER" Then
        Excecute code
    END if
    

    另一种经常使用的不等于的写法是 != 而不是

    【讨论】:

    • 这实际上并不能实现 OP 所追求的目标,您需要上面 @Tim Schmenlter 所建议的 AndAlso
    • 另一种经常使用的不等于写法是 != 而不是 并不重要,因为这是VB.net, not C#
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2013-08-22
    相关资源
    最近更新 更多