我想要做的是:如果计算机名称的前3个字母与“ZEB”或“DON”或“TIO”等相匹配,那么就这样做。我唯一的问题是,现场的计算机名称是“ZEB700”或“DON800”或“TIO900”。
我只想匹配/获取我不想匹配的计算机名称的前三个字母/之后得到的数字。
我现在有什么:
Dim strHostName As String
Dim Prefix As String
strHostName = System.Net.Dns.GetHostName()
Prefix = strHostName.Substring(0, 3)
If Prefix = "ZEB" or "DON" or "TIO" Then
MessageBox.Show("Matches")
End If
答案 0 :(得分:2)
您的问题在于Or
语法。 Or
或OrElse
之间的所有内容都应该能够被评估为真或假,因此"POR" Or "MON"
没有意义。如果您有多个组,则可以执行此类操作前缀:
Dim strHostName As String
Dim Prefix As String
Dim PrefixGroup1() As String = {"POR", "MON", "MTK"}
strHostName = System.Net.Dns.GetHostName()
Prefix = strHostName.Substring(0, 3)
If PrefixGroup1.Contains(Prefix) Then
MessageBox.Show("Matches")
End If
或者,如果你只有一个小组,你可以用它来做速记:
If {"POR", "MON", "MTK"}.Contains(Prefix) Then
MessageBox.Show("Matches")
End If
或者漫长的道路:
If Prefix = "POR" OrElse Prefix = "MON" OrElse Prefix = "MTK" Then
MessageBox.Show("Matches")
End If
答案 1 :(得分:1)
条件INSERT IGNORE INTO posts
SET internal = 1,
schedule_date = DATE_SUB(%s, INTERVAL 2 HOUR)
并不像您期望的那样工作。它不会将变量Prefix = "ZEB" Or "DON" Or "TIO"
与3个字符串中的任何一个进行比较,而是尝试计算布尔表达式Prefix
(我希望引发错误)和然后将(布尔)结果与变量"ZEB" Or "DON" Or "TIO"
进行比较。
更改
Prefix
到
If Prefix = "ZEB" or "DON" or "TIO" Then
问题就会消失。
更好(更具可扩展性)的方法是正则表达式匹配。这样的事情应该有效:
If Prefix = "ZEB" Or Prefix = "DON" Or Prefix = "TIO" Then
不完全确定语法,因为我通常使用VBScript,PowerShell和其他脚本语言,而不是VB.net。
答案 2 :(得分:0)
我会选择Select Case结构:
Select Case strHostName.Substring(0, 3)
Case "ZEB"
MessageBox.Show("Matches")
Case "DON"
MessageBox.Show("Matches")
Case "TIO"
MessageBox.Show("Matches")
Case Else
MessageBox.Show("Does not match")
End Select
这使您可以为每个前缀选择不同的处理方式。
答案 3 :(得分:0)
我会使用像这样的精选案例构造:
Select Case strHostName.Substring(0, 3)
Case "ZEB", "DON", "T10"
MessageBox.Show("Matches")
Case Else
MessageBox.Show("Does not match")
End Select