|
|
hi,
included below is a small macro which is part of a currently stalled "pet"
project. it reads a string containing a list of items, separated by some
character, splits it, and returns an array of the string items.
eg.
#declare list = "one two three";
#declare words = strSplit(list,chr(32));
leaves 'one' in 'words[0]' etc. an empty list element produces an empty array
element. hope you will find it useful.
regards, jr.
--------<snip>--------
#macro strSplit(s_,sep_)
#local n_ = strlen(s_);
#if (!n_)
#error "strSplit: string must not be empty."
#elseif (1 != strlen(sep_))
#error "strSplit: separator must be a single character."
#end
#local a_ = array;
#local f_ = false;
#local i_ = 1;
#local k_ = 0;
#while (n_ >= i_)
#if (!strcmp(sep_,substr(s_,i_,1)))
#if ((i_ - 1) = k_) #local t_ = "";
#else #local t_ = substr(s_,(k_ + 1),(i_ - k_ - 1));
#end
#if (n_ = i_) #local f_ = true; #end
#local a_[dimension_size(a_,1)] = t_;
#local k_ = i_;
#undef t_
#elseif (n_ = i_)
#local a_[dimension_size(a_,1)] = substr(s_,(k_ + 1),(i_ - k_));
#end
#local i_ = i_ + 1;
#end
#if (f_) #local a_[dimension_size(a_,1)] = ""; #end
a_
#end
--------<snip>--------
Post a reply to this message
|
|