Published: Sunday, May 09, 1999
Parsing with join and split
join and split are two useful functions for string
parsing. In short, join takes a single dimensional array and concatenates it
into a string, while split takes a string and splits it up into a one dimensional
array.
join returns a string, and is called as follows:
join(list[, delimiter])
List is the single dimensional array that you want to have all of its members
concatenated. Delimiter is optional (" " by default), and specifies what delimiter
you want between each element from the array in the string. I know this may
sound a bit confusing, so let's take a look at an example.
Dim OneDimArray(5)
OneDimArray(0) = "Hello,"
OneDimArray(1) = "my"
OneDimArray(2) = "name"
OneDimArray(3) = "is"
OneDimArray(4) = "Bob!"
Dim strSentence
strSentence = join(OneDimArray)
The above code would set strSentence to "Hello, my name is Bob!".
If we changed strSentence = join(OneDimArray) to
strSentence = join(OneDimArray, ","), strSentence would be
"Hello,,my,name,is,Bob!" The delimiter (in the former case " ", the default, in the latter
case ",") simply specifies what character(s) to put between each element from the
list array. If you want no character(s) between the elements, simply execute
strSentence = join(OneDimArray, ""), which would set strSentence
to "Hello,mynameisBob!"
split is the inverse of join. split takes
a string and splits it up into a single dimensional array. split,
then, returns a single dimensional array, and is called as follows:
split(String Expression[, delimiter[, count[, compare]]])
The only required parameter is the string expression you want to split up.
Delimiter is optional, defaulting to " ". Count is the number of substrings
you want to return, while compare decides how to compare substrings. (I won't
discuss compare any further; for full information on split, visit
this page.)
Again, this may all sound a bit confusing, so let's look at an example.
Dim strSentence
strSentence = "Hello, my name is Bob!"
Dim OneDimArray
OneDimArray = split(strSentence)
The above code with create a one dimensional array stored in OneDimArray with
the following elements: "Hello,","my","name","is","Bob!".
Let's say that we only wanted three elements in OneDimArray. We could limit the
number of substrings using the count parameter. If we simply issues:
Dim strSentence
strSentence = "Hello, my name is Bob!"
Dim OneDimArray
OneDimArray = split(strSentence, " ", 3)
we would accomplish our task, having OneDimArray's elements as follows: "Hello,",
"my","name is Bob!". If we wanted to
use the comma as a delimiter, that could easily be accomplished by performing
OneDimArray = split(strSentence,","), which would set OneDimArray's
elements to: "Hello","my name is Bob!".
Hopefully you can clearily see that join and split are
inverses of one another (both in the layman's sense and in a mathematical sense).
For example, we can do:
Dim strSentence, strCopy
strSentence = "Hello, my name is Bob!"
strCopy = join(split(strSentence))
strCopy and strSentence are identical here. Pretty neat, eh?
You may be asking yourself, "OK, split and join sure are neat, but what the heck
are some useful applications for the two?" Well, I'm glad you asked.
At ASPMessageboard.com, I manage
the advertisers using a text file with delimiters. The text file looks like:
Advertiser Name
Advertiser URL
Advertiser Category
Banner ID
Comment
*
Advertiser Name
Advertiser URL
Advertiser Category
Banner ID
Comment
*
Advertiser Name
Advertiser URL
Advertiser Category
Banner ID
Comment
*
...
Whenever I need access to any record in this delimited text file, I first use
the FileSystemObject to read in the entire text file into one string. I then
issue a recArray = split(str,"*"), to get an array with each element a single
record. Finally, to get each element in the record, I issue another split,
elementArray = split(recArray(i),chr(13)), which stores each
element of the ith record in elementArray. Pretty slick, eh? I use join
to build the structure back up if needed. (If you are unfamiliar with the
FileSystemObject, I recommend reading Ryan S.'s,
Reading & Writing Text Files using ASP.)
Well, I hope this has been educational! If you have any questions, I suggest you
post them on ASPMessageboard.com.
Have a great day!