Lotus Notes/Lotus Designer

Lotus Script - explode

지병철 2013. 9. 27. 11:36

Implode 는 Lotus Script 기본 Function 에 포함되어 있는 것을 사용하면 되고,

Explode 는 아래의 Function 을 추가해서 사용하면 된다.


%REM

 fullString : Item 들이 들어있는 string 이며 ',' 혹은 ';' 등 separator 로 구분되어 진 것이다

separator: 위에서 설명한 separator 이다

empties: Trim 을 할것인지 결정한다


결과값의 갯수를 확인하기 위해서는

Dim List As Variant

Dim cnt As Integer


List = Explode(somestring, ",", 0)

cnt = 0

Forall v in List

cnt = cnt + 1

End Forall

을 Coding 하면 된다


separator 가 "," 이고, fullString = "abc,efg,,zzz" 의 경우 separator에 의해 4개의 Item 이 들어와야 하는데

세번째 것이 null string 이므로, 결과값은 다음과 같다

List(0) : "abc"

List(1) : "efg"

List(2) : "zzz"

즉, null string 이 변환되지 않아 3개의 string 만 분리되어 변환된다.

%END REM


Function Explode(fullString As String, separator As String, empties As Integer) As Variant

Dim fullStringLen As Integer

Dim lastPosition As Integer

Dim position As Integer

Dim x As Integer

Dim tmpArray() As String

If empties = False Then fullString = Trim$(fullString)

If separator = "" Then separator = " " 

fullStringLen = Len(fullString)

lastPosition = 1 

position = Instr(fullString, separator)

If position > 0 Then

x = 0

While position > 0

x = x+1

Redim Preserve tmpArray(x)

         ' The next entry in the array is going to be the part of the string from the

         ' end of the previous part to the start of the new part.

tmpArray(x-1) = Mid$(fullString, lastPosition, position - lastPosition)

If empties = False Then

            ' If the user does not want empties and there are consecutive separators,

            ' skip over the 2nd, 3rd, etc. instance of the separator.

While Mid$(fullString, position+Len(separator), Len(separator)) _

= Mid$(fullString, position, Len(separator))

position = Instr(position+Len(separator), fullString, separator)

Wend

End If

lastPosition = position + Len(separator)

position = Instr(position+Len(separator), fullString, separator)

Wend

tmpArray(x) = Mid$(fullString, lastPosition)  ' Save everything after the last separator

If empties = False And Trim(tmpArray(x)) = "" Then

Redim Preserve tmpArray(x-1) ' Eliminate the last one if it's empty

End If

Else

Redim tmpArray(0)

tmpArray(0) = fullString

End If

Explode = tmpArray

End Function