To read the article online, visit http://www.4GuysFromRolla.com/webtech/050999-1.shtml

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!


Article Information
Article Title: Parsing with join and split
Article Author: Scott Mitchell
Published Date: Sunday, May 09, 1999
Article URL: http://www.4GuysFromRolla.com/webtech/050999-1.shtml


Copyright 2017 QuinStreet Inc. All Rights Reserved.
Legal Notices, Licensing, Permissions, Privacy Policy.
Advertise | Newsletters | E-mail Offers