VB.NET:如何在一行中的特定单词后找到一个单词并存储它

VB.NET:如何在一行中的特定单词后找到一个单词并存储它,vb.net,Vb.net,我有一个连续的字符串从一台机器到我的系统的超级终端,我使用USB到串行电缆。我想找到字符串中特定单词后面的一些值,然后存储它 我使用了线程和拆分概念来实现它,但是根据机器的要求和操作,它在运行时无法正常工作 我想要捕捉的值来自一个特定的词。我想跳过这些单词,只存储这些值。怎么做 我在下面给出了该字符串的示例: MEAN 49 50 SD 500 10 MIN 100 5 MAX 50 45.56 平均49 50 SD 500 10 最低100 5 最高50.45.56 在这种情况下,

我有一个连续的字符串从一台机器到我的系统的超级终端,我使用USB到串行电缆。我想找到字符串中特定单词后面的一些值,然后存储它

我使用了线程和拆分概念来实现它,但是根据机器的要求和操作,它在运行时无法正常工作

我想要捕捉的值来自一个特定的词。我想跳过这些单词,只存储这些值。怎么做

我在下面给出了该字符串的示例:

MEAN 49 50 SD 500 10 MIN 100 5 MAX 50 45.56 平均49 50 SD 500 10 最低100 5 最高50.45.56
在这种情况下,我只想存储值,例如
49
50
,然后丢弃
MEAN
。然后丢弃
SD
并存储
500
10
,依此类推

这可能就是你要找的。虽然我个人会创建一个存储类型(平均值、中值等)、firstvalue和secondvalue的类

不过,听上去,您希望它做的只是将值转储到某种存储中,因此这就足够了

Dim Values as New List(Of Decimal)

'Use a streamreader to read each line of text
Using reader As StreamReader = New StreamReader(*your text source*)
'Read the line 
Dim linetext as string = reader.ReadLine
Dim myValue as decimal
'Split the line
Dim splitText() = linetext.Split(" ")
'Analyze each section of the line, if its possible to parse the value as a decimal then add it to the list of values to be stored.
For Each txt in splitText
If Decimal.TryParse(txt, myValue) then Values.Add(myValue)
Next
End Using 

您可以使用
StreamReader
对象一次读取一行流。然后,您可以使用
String.Split
方法轻松解析该行。我建议创建一个或多个表示正在读取的数据的类,如下所示:

Public Class LineData
    Public Property Label As String
    Public Property Value1 As Decimal
    Public Property Value2 As Decimal
End Class

Public Function ReadNextLine(stream As Stream) As LineData
    Dim reader As New StreamReader(stream)
    Dim line As String = reader.ReadLine()
    Dim data As LineData = Nothing
    If line IsNot Nothing Then
        Dim words() As String = line.Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries)
        If words.Length = 3 Then
            data = New LineData()
            data.Label = words(0)
            data.Value1 = Decimal.Parse(words(1))
            data.Value2 = Decimal.Parse(words(2))
        End If
    End If
    Return Data
End Function

注意,这是一个基于您提供的示例数据的非常简单的示例。如果不同的行具有不同数量的数值参数,这将使逻辑更加复杂。在我的示例中,如果无法读取任何数据,则该方法将返回
Nothing
。此外,如果行中的最后两个字不是数字,则该方法将引发异常。因此,您需要将其包装在一些额外的异常处理中。

您可以使用
instr
在另一个字符串中查找字符串的开头。使用该值和要查找的字符串的长度可以找到数值。如果可以的话,我建议用逗号分隔字符串,然后你可以搜索逗号作为参考点,你可以使用它来过滤数字。