2017-08-03 38 views
-2

我想要做的是:如果計算機名稱的前3個字母與「ZEB」或「DON」或「TIO」等匹配,那麼執行此操作然後。我遇到的唯一問題是計算機在該字段中的名稱是「ZEB700」或「DON800」或「TIO900」。只匹配計算機名稱的前3個字母

我只想匹配/得到計算機名稱的前三個字母,我不想匹配/之後得到數字。

我目前有:

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

_IF PREFIX = 「ZEB」 否則別指望PREFIX = 「DON」 否則別指望Preifx = 「TIO」 Then_ AND請解釋這是否是VB.NET或VBScript。他們是兩種完全不同的語言。 – Steve

回答

2

你的問題是與Or語法。 OrOrElse之間的一切都應該能夠被評估爲真或假,所以"POR" Or "MON"不做,如果你有前綴的多組sense.You可以做這樣的事情:

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

你性感的人類,這非常驚人。我不能接受答案,直到我的夥伴在他的結局中進行測試。不過,預計下週某個時候可以接受的答案。謝謝你UUUUU !!!! :D – JeanPaul98

1

條件Prefix = "ZEB" Or "DON" Or "TIO"不會像你期望的那樣工作。它沒有將變量Prefix與3個字符串中的任何一個進行比較,但試圖計算布爾表達式"ZEB" Or "DON" Or "TIO"(我希望會引發錯誤),然後然後將(布爾)結果與變量Prefix進行比較。

變化

If Prefix = "ZEB" or "DON" or "TIO" Then 

If Prefix = "ZEB" Or Prefix = "DON" Or Prefix = "TIO" Then 

,問題就會消失。

更好的(更可擴展的)方法是正則表達式匹配。像這樣的東西應該工作:

Regex re = new Regex("^(DON|TIO|ZEB)") 
If re.IsMatch(Prefix) Then 
    ... 
End If 

不完全確定的語法,雖然,因爲我通常使用VBScript,PowerShell和其他腳本語言,而不是VB.net。

+0

謝謝你的迴應。這似乎也起到了作用。 – JeanPaul98

0

我會做,與選擇案例結構:

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 

,您可以選擇爲每個前綴不同的處理。

0

我將與選擇的情況下做到這一點構造是這樣的:

Select Case strHostName.Substring(0, 3) 
    Case "ZEB", "DON", "T10" 
     MessageBox.Show("Matches") 
    Case Else 
     MessageBox.Show("Does not match") 
End Select