467,080 Members | 946 Online
Bytes | Developer Community
Ask Question

Home New Posts Topics Members FAQ

Post your question to a community of 467,080 developers. It's quick & easy.

Finding a SubString within a String

Hello,

Using VB and ASP,NET I would like to be able to search a STRING for a
smaller STRING within, based on the characters which appear before and
after.

For example:

String1 = " That was a tasty burger"

How can I return the word Tasty, by referencing the word "a" and
"burger"....

In pseudo style:

Find all characters between " a " and " burger" (note the spaces), and store
as a string

Result:
tasty
Any ideas?

Regards,

Gary.
Mar 31 '06 #1
  • viewed: 2872
Share:
2 Replies
This is what regular expressions are for. There's a quick overview of
match groups and VB.Net at
http://www.regular-expressions.info/dotnet.html

Mar 31 '06 #2
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
"Badass Scotsman" <ba****@ismyname.com> wrote in message
news:e0*******************@news.demon.co.uk...
Hello,

Using VB and ASP,NET I would like to be able to search a STRING for a
smaller STRING within, based on the characters which appear before and
after.

For example:

String1 = " That was a tasty burger"

How can I return the word Tasty, by referencing the word "a" and
"burger"....

In pseudo style:

Find all characters between " a " and " burger" (note the spaces), and
store as a string

Result:
tasty
Any ideas?

Regards,

Gary.

Mar 31 '06 #3

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

4 posts views Thread by Victor Engmark | last post: by
6 posts views Thread by becte | last post: by
53 posts views Thread by yinglcs@gmail.com | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.