By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
445,824 Members | 1,252 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 445,824 IT Pros & Developers. It's quick & easy.

Finding a SubString within a String

P: n/a
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
Share this Question
Share on Google+
2 Replies


P: n/a
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

P: n/a
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.