Code archives/Miscellaneous/Split
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
| This function splits a string with separators into an array of strings. Split supports substrings both contained in ' and " a=Split("a+b+c|d-'e+f'","+|-") the contents of 'a' should be ["a","+","b","+","c","|","d","-","'e+f'"] | |||||
Function Split:String[](s:String, sep:String)
Local word:String, word_c=0
Local o=1,in_str=0, char=0
Local words:TList=CreateList()
For Local i=1 To s.length
Local sc=s[i-1]
If in_str=0 And (sc=Asc("~q") Or sc=Asc("'"))
in_str=sc
ElseIf sc=in_str
in_str=0
EndIf
If in_str=0
For Local j=1 To sep.length
char=sep[j-1]
If char=sc
word=Mid(s,o,i-o)
If word
words.AddLast(word)
word_c:+1
EndIf
words.AddLast(Chr(char))
word_c:+1
o=i+1
EndIf
Next
EndIf
Next
word=Mid(s,o,s.length)
If word
words.AddLast(word)
word_c:+1
EndIf
Local word_array:String[]=String[](words.ToArray())
Return word_array
EndFunction |
Comments
None.
Code Archives Forum