Vfp6的几个函数

几个为Vfp6写的函数,单位系统用vfp6开发。不打算升级的Vfp9.针对现在互联网时代所写的几个函数

 

Func Strextract(cSearchExpression, cBeginDelim , cEndDelim , nOccurrence)
 *!* *******************************************
 *!* Create By Alan Hung
 *!* Create Date 2017-05-31
 *!* Example:cStr=Strextract('<a>a</a><abc>abc</abc><a>b</a>','<a>','</a>',2)
 *!*         ?cStr
 *!*         'b'
 *!* 说明:本函数用于解析网页和Xml表,为Vfp6写
 *!* *******************************************
 if empty(nOccurrence)
  nOccurrence=1
 endif
 if empty(cSearchExpression)
  retur ''
 endif
 if empty(cBeginDelim )
  retur ''
 endif
 if vartype(cEndDelim )<>'C'
  cEndDelim =''
 endif
 LnDelLen=Len(cBeginDelim+'a')-2
 return right(Left(cSearchExpression,atc(cEndDelim,cSearchExpression,nOccurrence)-1),;
  atc(cEndDelim,cSearchExpression,nOccurrence)-1-atc(cBeginDelim,cSearchExpression,nOccurrence)-LnDelLen)
endfunc

 

Func icase
 Lpara LToPara1,LToPara2,LToPara3,LToPara4,LToPara5,LToPara6,LToPara7,LToPara8,LToPara9,LToPara10,;
  LToPara11,LToPara12,LToPara13,LToPara14,LToPara15,LToPara16,LToPara17,LToPara18,LToPara19,LToPara20,;
  LToPara21,LToPara22,LToPara23,LToPara24,LToPara25,LToPara26,LToPara27
 *!* *******************************************
 *!* Create By Alan Hung
 *!* Create Date 2002-05-26
 *!*Example:aa=icase(a=1,'2',a=2,'f',a=3,'g','a')
 *!*        如果 a=1 aa='2'类推,为Vfp6写
 *!* *******************************************
 Local LnMaxPCount,PARANAME,LcParaName
 PARANAME='LToPara'
 LnMaxPCount=PCount()
 LnForPCount=iif(mod(LnMaxPCount,2)=0,LnMaxPCount,LnMaxPCount-1)
 For i001=1 to LnForPCount
  If mod(i001,2)=1
   LcParaName=PARANAME+allt(str(i001))
  Else
   Loop
  Endif
  If type(LcParaName)='L'
   If &LcParaName
    LcParaName=PARANAME+allt(str(i001+1))
    Return &LcParaName
   Endif
  Endif
 Endfor
 If mod(LnMaxPCount,2)=1
  LcParaName=PARANAME+allt(str(LnMaxPCount))
  Return &LcParaName
 Else
  Return ''
 Endif
Endfunc

Func GetWordNum
 Lpara cString,nIndex,cDelimiters
 *!* *******************************************
 *!* Create By Alan Hung
 *!* Create Date 2002-05-26
 *!*Example:aa=getwordnum('aaaa,bbbbb,ddc',1,',')  aa='aaaa'
 *!*        aa=getwordnum('aaaa,bbbbb,ddc',2,',')  aa='bbbbb',为Vfp6写
 *!* *******************************************
 If empty(cString) or empty(nIndex)
  Return ''
 Endif
 If Vartype(cDelimiters)<>'C'
  cDelimiters=icase(at(' ',cString)>0,' ',at(chr(13),cString)>0,chr(13),chr(10))
 Endif
 Local LnDelLen,LnTmpIndex,LcReturnValue
 LnDelLen=Len(cDelimiters+'a')-2
 LnTmpIndex=1
 LcReturnValue=''
 cString=cString+cDelimiters
 If nIndex>1
  LcReturnValue=right(Left(cString,at(cDelimiters,cString,nIndex)-1),at(cDelimiters,cString,nIndex)-1-at(cDelimiters,cString,nIndex-1)-LnDelLen)
 Else
  LcReturnValue=LEFT(cString,at(cDelimiters,cString)-1)
 Endif

 Return LcReturnValue
Endfunc

Func GetWordCount(cString,cDelimiters)
 *!* *******************************************
 *!* Create By Alan Hung
 *!* Create Date 2002-05-26
 *!*GetWordNum能返回的最大值数,为Vfp6写
 *!* *******************************************
 Return OCCURS(cDelimiters, cString)+1
Endfunc

Func MyAlines(arrayName,cString,cDelimiters)
 *!* *******************************************
 *!* Create By Alan Hung
 *!* Create Date 2017-02-26
 *!* Example: dime astr(1) aStr=Myalines(@astr,'a,b,c',',')
 *!*       结果: aStr(1)='a',aStr(2)='b',aStr(3)='c'
 *!* 说明:第一个数组名称,传入字符串,返回数组,为Vfp6写
 *!* *******************************************
 If empty(cString)
  dime arrayName(1)
  arrayName(1)=''
  Return
 Endif
 If Vartype(cDelimiters)<>'C'
  cDelimiters=icase(at(chr(13),cString)>0,chr(13),at(chr(10),cString)>0,chr(10),'')
 Endif
 Local LnDelLen,LnTmpIndex
 LnDelLen=Len(cDelimiters+'a')-2
 LnTmpIndex=1
 cString=cString+cDelimiters
 Do while at(cDelimiters,cString)>0
  dime arrayName[LnTmpIndex]
  LcReturnValue=LEFT(cString,at(cDelimiters,cString)-1)
  If LnTmpIndex=1
   If !empty(LcReturnValue)
    arrayName[LnTmpIndex]=LcReturnValue
   Endif
  Else
   arrayName[LnTmpIndex]=LcReturnValue
  Endif
  cString=STUFF(cString,1,at(cDelimiters,cString)+LnDelLen,'')
  LnTmpIndex=LnTmpIndex+1
 Enddo
Endfunc

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

歇歇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值