hur.cn - 华软网

 热门搜索

请问如何实现类似vb中split函数的功能?

  作者:未知    来源:网络    更新时间:2018/6/13
请问如何实现类似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      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。