Vb.net搜索字符串不按任何特定顺序

时间:2018-09-13 00:04:16

标签: vb.net

所以我遇到了一个问题,我无法完全解决这个问题,希望我能正确解释。

我正在VB.net中工作

我的字符串是

  

来自杰克逊国家气象局:强烈雷暴   匹兹堡[PA],根西岛,[风速:60英里每小时,冰雹:1.00英寸],   Belmont [OH]直到CDT下午3:45

所以这是我的问题,上面列出的县/市/县/市可以按任意顺序排列在每个给定的警告/监视/建议上,因此PA可以列在第一,最后或中间。

这就是我所需要的,我需要能够将PA的县分为一个部分,OH的另一个部分,WV的另一个部分,等等...

  

示例:贝尔蒙,根西岛,来宝[OH]   俄亥俄州马歇尔,Wetzel [WV]

请记住,各州和州可能会因警告而异。

我的总体目标是,可能马里恩[OH]和马里恩[WV]处于同一警告中,我想将马里恩[WV]排除在外,并让马里恩[OH]与其他可能出现的县一起列出。

Dim string1 As String
string1 = Split(TextBox1.Text, "till")(0)
If InStr(TextBox1.Text, "[PA]") Then
    string1 = Split(string1, "[PA]")(1)
    string1 = Replace(string1, ", ", ",")
    string1 = Replace(string1, ",", "|")
    string1 = Split(string1, "[OH]")(0)
Else
    If InStr(TextBox1.Text, "[WV]") Then
        string1 = Split(string1, "[WV]")(1)
        string1 = Replace(string1, ", ", ",")
        string1 = Replace(string1, ",", "|")
        string1 = Split(string1, "[OH]")(0)
    End If
End If

TextBox2.Text = string1

1 个答案:

答案 0 :(得分:1)

似乎您需要解析字符串。建议您阅读有关“正则表达式”的信息(简称recyclerview)。这是一种在字符串中查找内容的方法。

例如,RegEx搜索模式RegEx将使您在给定的源字符串中出现字符串“ [PA]”或“ [OH]”或“ [CA]”。 / p>

\[(PA|OH|CA)\]

这个简短的控制台程序向您展示了如何在VB.NET中使用Imports System.Text.RegularExpressions Public Module Module1 Sub Main() Dim source As String = "From the National Weather Service in Jackson: Severe Thunderstorm Warning [wind: 60 MPH, hail: 1.00 IN] for Pittsburgh [PA],Guernsey, Belmont [OH] till 3:45 PM CDT" Dim searchPattern As String = "\[(PA|OH|CA)\]" Dim matches As MatchCollection matches = Regex.Matches(source, searchPattern) For Each match As Match In matches Console.WriteLine(String.Format("{0} at position {1} in source string", match.Value, match.Index)) Next match Console.ReadKey() End Sub End Module

现在您知道在源字符串中可以找到状态缩写的位置,现在您可以解析源字符串以获取所需的其余信息。

请务必彻底测试您的RegEx搜索模式,因为通常它们会比您想像的更多或更少。有很多网站可以测试RegEx搜索模式(例如https://regex101.com