仅匹配计算机名称的前3个字母

时间:2017-08-03 21:20:28

标签: vb.net

我想要做的是:如果计算机名称的前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

4 个答案:

答案 0 :(得分:2)

您的问题在于Or语法。 OrOrElse之间的所有内容都应该能够被评估为真或假,因此"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