请问如何实现类似vb中split函数的功能
public function string of_str_join (string as_array[], string as_split);
//将数组合并为字符串
long ll_i
string lstr = ""
for ll_i = LowerBound(as_array) to UpperBound(as_array)
if ll_i = UpperBound(as_array) then
lstr = lstr + as_array[ll_i]
else
lstr = lstr + as_array[ll_i] + as_split
end if
next
return lstr
end function
public function long of_str_split (string as_expression, string as_split, ref string as_array[]);
//将字符串拆分为数组
long ll_pos = 1 //数组位变量
long ll_find //pos返回位置变量
string ls_null[]
//==
if isnull(as_expression) or isnull(as_split) then
setnull(ll_pos)
return ll_pos
end if
as_array[] = ls_null[]
//
ll_pos = 1
ll_find = pos(upper(as_expression), upper(as_split)) // 不去分大小写
do while ll_find > 0
as_array[ll_pos] = left(as_expression,ll_find - 1)
as_expression = right(as_expression,len(as_expression) - ll_find - len(as_split) + 1) //去掉刚才放到数组中的部分
//==
ll_find = pos(upper(as_expression), upper(as_split)) // 不去分大小写
ll_pos = ll_pos + 1 //数组上升1位
loop
as_array[ll_pos] = as_expression //将最后一位放到数组中
//==
return ll_pos //返回产生的数组上限
end function
// f_split(byval string liststr, byref string list[],fs_invchar)
if isnull(liststr) or len(liststr) <= 0 then return 0
string empty[]
int count , posi , splitlen
list = empty
splitlen = len(fs_invchar)
if isnull(liststr) or len(liststr) <= 0 then return 0
do
posi = pos(liststr,fs_invchar)
if posi <= 0 then
list[upperbound(list) + 1 ] = trim(liststr)
else
list[upperbound(list) + 1 ] = trim(left(liststr,posi - 1 ))
liststr = trim(mid(liststr, posi + splitlen ))
end if
count ++
if len(trim(liststr)) <= 0 or posi <= 0 then exit
loop while posi > 0
return count