2012-09-04 3 views
-1

Мне нужна функция stringbetween. Но функция должна быть массивом.vb.net StringBetween Function Array

Ex: p1 и p2 какой-либо текст.

MyString = "бла бла бла StartText бла бла бла бал EndText бла бла StartText бла бла EndText"

Эта функция;

dim BetweenStrings as Array 

BetweenStrings = _GetStringBetween(Mystring,"StartText","EndText") 

BetweenStrings(1) ---> bla bla bla bla 

BetweenStrings(2) ---> bla bla 

Для всех StartText и EndText между.

ответ

1

Использование регулярных выражений будет отличным выбором, как показал Джим Вули. Однако, если вы ищете решение без регулярных выражений, это должно работать:

Private Function _GetStringBetween(ByVal text As String, ByVal startTag As String, ByVal endTag As String) As String() 
    Dim results As New List(Of String)() 
    While text.Length <> 0 
     Dim startIndex As Integer = text.IndexOf(startTag) 
     If startIndex <> -1 Then 
      text = text.Substring(startIndex + startTag.Length) 
      Dim endIndex As Integer = text.IndexOf(endTag) 
      If endIndex <> -1 Then 
       results.Add(text.Substring(0, endIndex)) 
       text = text.Substring(endIndex + endTag.Length) 
      Else 
       Exit While 
      End If 
     Else 
      Exit While 
     End If 
    End While 
    Return results.ToArray() 
End Function 
+0

Hi SteveDog. Огромное спасибо . –

1

Возможно, вы захотите изучить регулярные выражения для совпадений строк. Например, из вашей входной строки, вы могли бы сделать что-то вроде следующего:

Dim regexString = "StartText(?<found>[^EndText]+)" 
Dim matches = Regex.Match(MyString, regexString) 
For Each match in matches 
    Console.WriteLine(match.Groups("found").Value) 
Next