Manage Learn to apply best practices and optimize your operations.

Explode Function

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:

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)

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

Dig Deeper on Domino Resources - Part 4

  • Favorite iSeries cheat sheets

    Here you'll find a collection of valuable cheat sheets gathered from across the iSeries/ community. These cheat ...