对于两个字符串VB.NET之间的每个文本

时间:2015-04-27 22:31:33

标签: vb.net

我试图在Visual Basic中获取2个静态字符串之间的所有文本。 例如:

Hello my name is Jesse Hello ........ Hello my name is John Hello ...... Hello my name is Frank Hello ........

我想在Hello之间搜索我的名字和Hello,所以输出将是:

Jesse
John
Frank

我已经对此做了一些研究,但我只能找到如何获得1个结果,我希望有人可以帮助我。

我目前有

Dim s As String = TextBox1.Text
Dim i As Integer = s.IndexOf("Hello my name is")
Dim result As String = s.Substring(i + 1, s.IndexOf("Hello", i + 1) - i - 1)

但它只会提供1个输出。

感谢。

2 个答案:

答案 0 :(得分:1)

正则表达式。 您需要使用正则表达式,即System.Text.RegularExpressions

Imports System.Text.RegularExpressions

Dim matches As MatchCollection = Regex.Matches(TextBox1.Text, "Hello my name is (\w+)")
For Each m As Match In matches
    Console.WriteLine(m.Groups(1).Value)
Next

如果你对正则表达式不熟悉,那么我只能给你一个温暖的拥抱,然后说,"对不起。"

答案 1 :(得分:0)

对于给定的input字符串,您可以执行以下操作:

ReadOnly Separators As String() = { "Hello my name is " }
Dim names As String() = input _
    .Split(Separators, StringSplitOptions.RemoveEmptyEntries) _
    .Where(Function(s) Not s.StartsWith("Hello")) _
    .ToArray()

For Each name As String In names
    Console.WriteLine(name)
Next

此:

  1. 将字符串拆分为多个字符串,并从输入中删除静态“Hello my name is”字符串部分。
  2. 使用Where对此进行过滤,以排除以“Hello”
  3. 开头的所有字符串
  4. 使用ToArray
  5. 将结果转换为数组