1

我正在扫描计算机上某些已安装程序的文本文档,并寻找一种简单的方法来在我正在扫描的字符串中包含大于或小于变量。这是我目前正在使用的一个非常丑陋和繁琐的示例,虽然它可以作为临时修复,但不实用或不可持续。

If CheckBox2.Checked Then
            sReader.Close()
            If text.Contains("Adobe Flash Player 11 Plugin") And
                text.Contains("Adobe Flash Player 11 ActiveX") Then
            Else
                If text.Contains("Adobe Flash Player 12 Plugin") And
                text.Contains("Adobe Flash Player 12 ActiveX") Then
                Else
                    If text.Contains("Adobe Flash Player 13 Plugin") And
                text.Contains("Adobe Flash Player 13 ActiveX") Then
                    Else

'(Goes ahead and does a silent install of the missing or outdated program)

到目前为止,我在使用 Adob​​e Flash 和 Java RTE 时都遇到了这个问题,并且肯定会在未来的程序中遇到这个问题。基本上我需要扫描“Adobe Flash Player(任何小于 11 的数字)插件”、“Adobe Flash Player(任何小于 11 的数字)ActiveX”、“Java(小于 9 的数字)更新(任何数字)”。

我确信所提供的任何解决方案都可能适用于我以后可能会遇到的类似程序。谢谢

- - - 编辑 - - -

我已经尝试了以下代码,但它总是返回“找到”消息框,即使它正在扫描的文件中没有 adobe flash 版本。

 If CheckBox2.Checked Then
            sReader.Close()
            Dim options As RegexOptions = RegexOptions.None
            Dim regex As Regex = New Regex("Adobe Flash Player (?<version>\d+) (Plugin|ActiveX)", options)
            Dim input As String = "Adobe Flash Player 11 Plugin"
            ' Get match
            Dim match As Match = regex.Match(input)
            Dim version As String = match.Groups("version").Value
            If (match.Success) Then
                MessageBox.Show("Version 11 or higher found, skipping install")
            Else
                MessageBox.Show("Version 11 or higher not found, installing Version 11")
4

2 回答 2

1

如果您可以相当确信字符串将始终具有相同的格式,则可以使用正则表达式来查找匹配项并获取版本号。

编辑:

这是一个代码片段:

Dim options As RegexOptions = RegexOptions.None
Dim regex As Regex = New Regex("Adobe Flash Player (?<version>\d+) (Plugin|ActiveX)", options)
Dim input As String = "Adobe Flash Player 11 Plugin"
' Get match
Dim match As Match = regex.Match(input)

Dim version As String = match.Groups("version").Value

“版本”变量现在包含版本号

干杯

于 2012-10-24T15:43:19.150 回答
0

您可能想尝试使用正则表达式进行匹配。

可能是这样的:

Dim regex As Regex = New Regex("Adobe Flash Player \d+ (Plugin|ActiveX)")
Dim match As Match = Regex.Match(input_to_match_against)

if(match.Success){
  ' do something here
  Dim version as String = m.Groups(1).Value ' Will give you the version of Adobe
}

如果代码不能正常工作,我深表歉意,我是从 C# 翻译的,从未使用过 VB。

也可能对构建您的正则表达式备忘单有用。它适用于 C#,但由于您使用的是 .NET,因此我希望正则表达式语法应该相同。

于 2012-10-24T15:50:27.690 回答