You Can View User Feedback To This Tip
Similar to Lotus' @Explode function, this Explode LotusScript function behaves as follows:
--Given a text string, elements that are separated by the specified separator are defined as
members of an array.
For example if the string that was passed was "a:bc:def:g", and the separator was defined as
":", then the resulting array would contain the following four values:
a
bc
def
g
Function explode (Byval inString As String, OutList() As String, delim As String)
'This function takes a text field and splits the values into members of an array, based on the value passed as delim
Dim idx As Integer
Dim begin As Integer
Dim i As Integer
i = 0
begin = 1
'First make sure that the last character in inString is not a delimiter If Right$ ( inString ,
Len(delim) ) = delim Then inString = Left$(inString,Len(inString) - Len(delim))
End If
idx = Instr (begin , inString , delim)
Do While idx > 0
Redim Preserve outList(0 To i) As String
outList(i) = Mid$ ( inString , begin , idx - begin )
i = i + 1
begin = idx + Len(delim)
idx = Instr (begin , inString , delim)
Loop
Redim Preserve outList(0 To i) As String
outList(i) = Mid$ ( inString , begin )
explode = i + 1
End Function
- Another way to implement the explode function would be using evaluate. In fact, use evaluate
whenever you can make a computation with the formula language. It is so much more efficient.
Dim texttosplit As String Dim resultarray As Variant Const delim = ":" texttosplit = "a:bc:def:g" resultarray = Evaluate(|@explode("| & texttosplit & |";"| & delim & |")|)Remember to avoid redim statements when you can. They're expensive.Kasper - The code for the script version of explode is a bit different from the @Function. The @Function uses every character in the string as a delimiter. For example, if I have a string "No1Yes2Maybe3" and I use @Explode(string; "123"), I will get No, Yes, Maybe. But if I use your script, I don't get any list array back, just my original string because my delimiter is not in the string as a string. But for a one-character delimiter, it works the same. >Robert Albritton
This was first published in November 2000