我使用此代码检查String
是否在另一个String
:
If StringData(1).Contains("-SomeText2.") Then
'some code
End If
'StringData(1) looks like this:
'-SomeText1.1401-|-SomeText2.0802-|-SomeText3.23-|-SomeText4.104-|
'In case I look for -SomeText1. I need 1401
'In case I look for -SomeText2. I need 0802
'In case I look for -SomeText3. I need 23
'In case I look for -SomeText4. I need 104
我首先检查-SomeText2.
是否在StringData(1)
,如果是,我需要获取文字的下一部分:0802
,这是我不知道怎么做的部分,我该怎么办?
所有字符串由|
分隔,所有子字符串以-
开头和结尾,并且.
将第一部分与第二部分分开。我检查以-
开头并以.
开头的所有字符串,因为中间有一些字符-
和|
,因此Split
函数赢了&#39工作。
这些字符串经常变化,所以无论字符串的长度如何,我都需要检查它。
答案 0 :(得分:3)
我只是将字符串拆分并在"和#34;之间获取文本。和" - "当找到搜索文本时:
Dim str As String = "-SomeText1.1401-|-SomeText2.0802-|-SomeText3.23-|-SomeText4.104-"
Dim searches() As String = {"-SomeText1", "-SomeText2", "-SomeText3", "-SomeText4"}
For Each search As String In searches
For Each value As String In str.Split(CChar("|"))
If value.Contains(search) Then
Dim partIwant As String = value.Substring(value.IndexOf(".") + 1, value.Length - value.IndexOf(".") - 2)
MsgBox(partIwant)
'Outputs: 1401, 0802, 23, 104
Exit For
End If
Next
Next
在这个例子中,我们只使用Contains()来查看我们的搜索字符串是否存在...我们实际上无法使用该函数获取任何进一步的信息,因为它返回的所有信息都是True或者错误。因此,一旦我们知道我们的字符串已被找到,只需要进行一些字符串操作就可以在"。"之间抓取文本。和" - "字符。 IndexOf()将获取句点的索引,然后我们只是在那里和字符串的最后一个字符之间拉文本。
答案 1 :(得分:1)
您的问题与WPF无关,因此标记和标题会产生误导。
要解决您的问题,您应该使用String.IndexOf(string)
代替String.Contains(string)
。这告诉你给定字符串的起始位置。如果该值为-1,则表示原始字符串根本不包含您的搜索字符串。
获得该起始索引后,您可以使用String.IndexOf(string, int)
搜索下一次出现的-
,以便了解该条目的停止位置。第二个参数告诉它应该从哪个索引开始搜索,在这种情况下,你应该在找到第一个匹配的索引处开始搜索。
现在您已经知道匹配的起始索引,条目的结束索引和搜索字符串的长度,您可以将它们放在一起并轻松使用String.Substring(int, int)
来获取您的字符串部分有兴趣。
这是直截了当,天真的解决方案。更复杂的解决方案只是为搜索字符串构建正则表达式,该搜索字符串的构建方式使您感兴趣的部分包含在捕获组中。但这是一个更精细的主题。