在文本框中搜索短语vb.net

时间:2015-11-25 13:34:22

标签: vb.net

我使用VB.NET并且我有一个文本框,其中包含以下信息(根据列表框中选择的视频文件而变化): -

type: ffmpeg-producer
filename: C:\caspar\Server\media\\adi.divx
width: 640
height: 360
progressive: false
fps: 25
loop: false
frame-number: 0
nb-frames: 4626
file-frame-number: 0
file-nb-frames: 4626

单击按钮时,我需要将数据添加到变量中。因此,例如,我需要从行

获取4626
  

nb-frames:4626

中的25
  

行fps:25

并将它们放在变量中,然后计算实际持续时间。

2 个答案:

答案 0 :(得分:0)

Public Function GetValue(ByVal varName As String) As String
    Dim lines() As String = Split(TextBox1.Text, Delimiter:=Environment.NewLine)
    For Each line As String In lines
        Dim words() As String = Split(line, Delimiter:=": ", Limit:=2)
        If words(0) = varName And words.Length = 2 Then
            Return words(1)
        End If
    Next
    Return Nothing
End Function

答案 1 :(得分:0)

您还可以使用正则表达式方法。如果您不熟悉正则表达式,我强烈建议您加入正则表达式。

以下是您要做的事情(txtMyTextbbox是文本框,保存您的数据:

Dim strRegex as String = "([\w-]*):\s*(.*)"
Dim myRegex As New Regex(strRegex, RegexOptions.None)
Dim strTargetString As String = txtMyTextbox.Text

For Each myMatch As Match In myRegex.Matches(strTargetString)
     If myMatch.Success Then
    dim category = myMatch.Groups(1).Value
    dim value = myMatch.Groups(2).Value
  End If
Next

此代码循环遍历文本框文本中的所有匹配项,并查找文本后跟冒号后跟空格和行的其余部分。每个匹配都在myMatch变量中捕获,您可以通过myMatch.Groups(1).value访问冒号前的部分,并通过第二个组访问冒号后的部分(不包括空格)。

如果您还有其他问题,请发表评论。