Gary,
I agree with Flinky. Regular Expressions are probably the best way to go.
However here are a few subroutines I wrote a while ago that do it a
different way if you'd like:
Really the very first method is the answer to the example you give. I just
have a few other overloaded methods so that the start and end flags of the
string(s) being searched for may be varied.
Public Function ExtractString(ByVal stringToSearch As String, ByVal
startFlag As String, ByVal endFlag As String) As String
Try
Dim mintStartLocation, mintEndLocation As Int32
Dim mstrFound As String = Nothing
'---Get the start location
mintStartLocation = stringToSearch.IndexOf(startFlag)
'---Check that a start location was found and that it isn't at the end of
the string
If (mintStartLocation > -1) And (mintStartLocation < stringToSearch.Length)
Then
'Search for the end location
mintEndLocation = stringToSearch.IndexOf(endFlag, mintStartLocation)
'---Extract the string found
If mintEndLocation = -1 Then
'---If no end location was found then grab everything from the start to the
end
mstrFound = stringToSearch.Substring(mintStartLocation)
Else
mstrFound = stringToSearch.Substring(mintStartLocation, (mintEndLocation -
mintStartLocation))
End If
End If
Return mstrFound
Catch e As Exception
Throw e
End Try
End Function
Public Function ExtractString(ByVal stringToSearch As String, ByVal
startIndex As Int32, ByVal startFlag As String, ByVal endFlag As String) As
String
Try
Dim mintStartLocation, mintEndLocation As Int32
Dim mstrFound As String = Nothing
'---Get the start location
mintStartLocation = stringToSearch.IndexOf(startFlag, startIndex)
'---Check that a start location was found and that it isn't at the end of
the string
If (mintStartLocation > -1) And (mintStartLocation < stringToSearch.Length)
Then
'Search for the end location
mintEndLocation = stringToSearch.IndexOf(endFlag, mintStartLocation)
'---Extract the string found
If mintEndLocation = -1 Then
'---If no end location was found then grab everything from the start to the
end
mstrFound = stringToSearch.Substring(mintStartLocation)
Else
mstrFound = stringToSearch.Substring(mintStartLocation, (mintEndLocation -
mintStartLocation))
End If
End If
Return mstrFound
Catch e As Exception
Throw e
End Try
End Function
Public Function ExtractString(ByVal stringToSearch As String, ByVal
startFlag As String, ByVal endFlags() As String) As String
Try
Dim mintStartLocation, mintEndLocation, mintTempEndLocation As Int32
Dim mstrFound As String = Nothing
Dim mblnEndFound As Boolean = False
'---Get the start location
mintStartLocation = stringToSearch.IndexOf(startFlag)
'---Check that a start location was found and that it isn't at the end of
the string
If (mintStartLocation > -1) And (mintStartLocation < stringToSearch.Length)
Then
'---Set the end location equal to the end of the string to search
mintEndLocation = stringToSearch.Length
'---Move through each string in the endflag array and set the end flag
location to the closest one.
For Each EndString As String In endFlags
mintTempEndLocation = stringToSearch.IndexOf(EndString, mintStartLocation)
If (mintTempEndLocation > -1) And (mintTempEndLocation < mintEndLocation)
Then
mintEndLocation = mintTempEndLocation
End If
Next
'---Extract the string found
mstrFound = stringToSearch.Substring(mintStartLocation, (mintEndLocation -
mintStartLocation))
End If
Return mstrFound
Catch e As Exception
Throw e
End Try
End Function
Public Function ExtractString(ByVal stringToSearch As String, ByVal
startIndex As Int32, ByVal startFlag As String, ByVal endFlags() As String)
As String
Try
Dim mintStartLocation, mintEndLocation, mintTempEndLocation As Int32
Dim mstrFound As String = Nothing
Dim mblnEndFound As Boolean = False
'---Get the start location
mintStartLocation = stringToSearch.IndexOf(startFlag, startIndex)
'---Check that a start location was found and that it isn't at the end of
the string
If (mintStartLocation > -1) And (mintStartLocation < stringToSearch.Length)
Then
'---Set the end location equal to the end of the string to search
mintEndLocation = stringToSearch.Length
'---Move through each string in the endflag array and set the end flag
location to the closest one.
For Each EndString As String In endFlags
mintTempEndLocation = stringToSearch.IndexOf(EndString, mintStartLocation)
If (mintTempEndLocation > -1) And (mintTempEndLocation < mintEndLocation)
Then
mintEndLocation = mintTempEndLocation
End If
Next
'---Extract the string found
mstrFound = stringToSearch.Substring(mintStartLocation, (mintEndLocation -
mintStartLocation))
End If
Return mstrFound
Catch e As Exception
Throw e
End Try
End Function
Regards,
--
S. Justin Gengo
Web Developer / Programmer
Free code library:
http://www.aboutfortunate.com
"Out of chaos comes order."
Nietzsche