我有这段代码
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
GetAllServices1()
End Sub
Private Sub GetAllServices1()
Dim services As ServiceProcess.ServiceController() = ServiceProcess.ServiceController.GetServices
Array.ForEach(services, Sub(s) ListBox1.Items.Add(s.DisplayName))
End Sub
可以很好地列出本地计算机上的所有服务。
现在我想做的是使用reqular表达式来列出我正在寻找的东西。根据软件的版本,服务名称可能不同
这样的事情
Private Sub GetAllServices1()
Dim services As ServiceProcess.ServiceController() = ServiceProcess.ServiceController.GetServices
Dim pattern As String = "(vmu\.? |wua\.? |W3S\.? )"
If (service name matches pattern) then
Array.ForEach(services, Sub(s) ListBox1.Items.Add(s.DisplayName))
End if
End Sub
非常感谢任何帮助。
答案 0 :(得分:0)
您可以使用Regex.IsMatch
方法测试数组中的每个项目,如下所示:
Dim r As New Regex("(vmu\.? |wua\.? |W3S\.? )")
For Each i As ServiceProcess.ServiceController In services
If r.IsMatch(i.DisplayName) Then
ListBox1.Items.Add(i.DisplayName)
End If
Next
或者,如果您更喜欢使用Array.ForEach
,则只需使用多行lambda表达式,如下所示:
Dim r As New Regex("(vmu\.? |wua\.? |W3S\.? )")
Array.ForEach(services, Sub(s)
If r.IsMatch(s.DisplayName) Then
ListBox1.Items.Add(s.DisplayName)
End If
End Sub)