December 03, 2020, 08:43:01 PM

Author Topic: [bmx] Split by Azathoth [ 1+ years ago ]  (Read 663 times)

Offline BlitzBot

  • Jr. Member
  • **
  • Posts: 1
[bmx] Split by Azathoth [ 1+ years ago ]
« on: June 29, 2017, 12:28:43 AM »
Title : Split
Author : Azathoth
Posted : 1+ years ago

Description : 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'"]


Code :
Code: BlitzMax
  1. Function Split:String[](s:String, sep:String)
  2.         Local word:String, word_c=0
  3.         Local o=1,in_str=0, char=0
  4.         Local words:TList=CreateList()
  5.        
  6.        
  7.         For Local i=1 To s.length
  8.                 Local sc=s[i-1]
  9.                
  10.                 If in_str=0 And (sc=Asc("~q") Or sc=Asc("'"))
  11.                         in_str=sc
  12.                 ElseIf sc=in_str
  13.                         in_str=0
  14.                 EndIf
  15.                
  16.                 If in_str=0
  17.                         For Local j=1 To sep.length
  18.                                 char=sep[j-1]
  19.                                 If char=sc
  20.                                         word=Mid(s,o,i-o)
  21.                                         If word
  22.                                                 words.AddLast(word)
  23.                                                 word_c:+1
  24.                                         EndIf
  25.                                         words.AddLast(Chr(char))
  26.                                         word_c:+1
  27.                                         o=i+1
  28.                                 EndIf
  29.                         Next
  30.                 EndIf
  31.         Next
  32.        
  33.         word=Mid(s,o,s.length)
  34.         If word
  35.                 words.AddLast(word)
  36.                 word_c:+1
  37.         EndIf
  38.        
  39.         Local word_array:String[]=String[](words.ToArray())
  40.         Return word_array
  41. EndFunction


Comments : none...

 

SimplePortal 2.3.6 © 2008-2014, SimplePortal