所以我遇到了一个问题,我无法完全解决这个问题,希望我能正确解释。
我正在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
答案 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)