挑战DeepSeek!感觉上,TA写VFP代码没太大问题啊。
提问:StrExtract(x,"<",">")可以提取两个分隔符之间的字符串,请实现函数StrDelExtract(x,"<",">"),用途是删除两个分隔符之间的字符串(类似于批量删除<XML>标签一类操作)。
回答:
FUNCTION StrDelExtract(cString, cBeginDelim, cEndDelim)
LOCAL nStartPos, nEndPos, cResult, i, nOccurrence
* 参数检查
IF VARTYPE(cString) <> "C" OR EMPTY(cString)
RETURN ""
ENDIF
IF VARTYPE(cBeginDelim) <> "C" OR EMPTY(cBeginDelim)
RETURN cString
ENDIF
IF VARTYPE(cEndDelim) <> "C" OR EMPTY(cEndDelim)
RETURN cString
ENDIF
nOccurrence = OCCURS(cBeginDelim, cString) && 统计匹配数目
IF nOccurrence = 0
RETURN cString
ENDIF
* 初始化
cResult = cString
* 循环处理所有匹配项
for i = 1 to nOccurrence
nStartPos = AT(cBeginDelim, cResult)
nEndPos = AT(cEndDelim, cResult)
IF nEndPos = 0
EXIT
ENDIF
* 删除匹配部分
cResult = STUFF(cResult, nStartPos, nEndPos - nStartPos + LEN(cEndDelim), "")
ENDFOR i
RETURN cResult
ENDFUNC
*---------------*
DeepSeek的原始代码用Do...while,随手改为For...Endfor,TA写的这段VFP代码,似乎也没啥好再优化的了。
