2017-08-03 4 views
-2

私がしたいことは、コンピュータ名の最初の3文字が "ZEB"や "DON"や "TIO"などと一致する場合は、そしてそれ。私が抱えている唯一の問題は、フィールド上のコンピュータ名がこの "ZEB700"や "DON800"や "TIO900"のようなものだということです。コンピュータ名の最初の3文字のみを一致させる

私は一致したい/一致したくないコンピュータ名の最初の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プレフィックス= "ZEBを" プレフィックス= "DON" orelse Preifx = "TIO" Then_ orelseこれはVB.NETの場合は説明してくださいまたはVBScript。彼らは2つの全く異なる言語です。 – Steve

答えて

2

あなたの問題はOr構文である:私は現在持っている何

OrまたはOrElse間のすべてがtrueまたはfalseに評価されることができるはずなので、"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

あなたはセクシーな人間ですが、これはすごくうまくいきました。私のパートナーがこれを最後までテストするまで、私はまだ答えを受け入れることができません。しかし、次の週にいつか受け入れられた答えを期待しています。ありがとうございます!!!! :D – JeanPaul98

1

条件Prefix = "ZEB" Or "DON" Or "TIO"は期待通りに動作しません。変数Prefixを3つの文字列のいずれかと比較するのではなく、ブール式"ZEB" Or "DON" Or "TIO"(エラーを発生させると予想されます)を計算しようとします。は結果を変数Prefixと比較します。

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

変更

If Prefix = "ZEB" or "DON" or "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構造であることだろう。

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 
関連する問題