如何在VB.NET中查找字符串中的子字符串中的值

如何在VB.NET中查找字符串中的子字符串中的值,vb.net,string,search,substring,Vb.net,String,Search,Substring,在VB.NET中,我需要在较大字符串中的子字符串内找到一个值 例如,MyString是一个字符串 MyString = " ============================ Channel --> 36 Antenna --> 127 MCS Level --> 14 Bandwidth --> 20 Packet Size --> 4000 11N signal? --> 1 BF Config

在VB.NET中,我需要在较大字符串中的子字符串内找到一个值

例如,MyString是一个字符串

MyString = "
============================
Channel      -->  36
Antenna      -->  127
MCS Level    -->  14
Bandwidth    -->  20
Packet Size  -->  4000
11N signal?  -->  1
BF Config    -->  0
============================"
如果我需要从该字符串中找到一个特定的值,比如MCS level,我是否要搜索“MCS level-->”的位置并找到接下来2个字符的值

或者有没有办法搜索“MCS级别-->%s”并在MyString中找到%s的值


谢谢!我感谢你的帮助。我想正确地执行此操作。

对于这个特定的示例,我将首先将字符串按新行拆分,然后再按空格拆分每行(忽略出现的空白)。这就留下了一个锯齿状数组,每行包含每一段非空白文本

Function GetMcsLevel(myString As String) As Integer
    For Each line As String In MyString.Split(Environment.NewLine)
        Dim pieces() As String = line.Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries)   
        If pieces.First() = "MCS Level" Then
            Return Integer.Parse(pieces.Last())
        End If
    Next
End Function

你也可以试试正则表达式。检查此模式:

MCS Level\D+(\d+)
它将为您提供所需的结果
14

编辑

示例代码:(未经测试,给出一个想法)


所以基本上,这会为每一行{“MCS-Level”,“-->”,“14”}生成一个数组,然后返回数组的最后一个值?好方法,谢谢!是的。如果您能够以XML或JSON格式获取输入数据,那就更好了,因为可能有无数种方法可以像这样放大代码。还要注意,即使输入数据中没有“MCS级别”,此函数也会返回0。
Dim mcol as MatchCollection = System.Text.RegularExpression.Regex.Matches(MyString,"MCS Level\D+(\d+)")

for each m as match in mcol
   Debug.Print("MCS Level is : " & m.ToString())
Next