点击或拖拽改变大小

Functions.StrExtract 方法

X#
-- todo --
在两个分隔符之间检索字符串。

命名空间:  XSharp.VFP
程序集:  XSharp.VFP (在 XSharp.VFP.dll 中) 版本:2.22 GA
语法
 FUNCTION StrExtract(
	cSearchExpression,
	cBeginDelim,
	cEndDelim,
	nOccurrence,
	nFlag
) AS STRING CLIPPER
查看代码

参数

cSearchExpression (Optional)
类型:__Usual
指定要搜索的字符串。
cBeginDelim (Optional)
类型:__Usual
指定cSearchExpression开始的分隔字符。
cEndDelim (Optional)
类型:__Usual
指定cSearchExpression结束的分隔字符。
nOccurrence (Optional)
类型:__Usual
指定从cSearchExpression中cBeginDelim的第几次出现开始提取。
nFlag (Optional)
类型:__Usual
指定对搜索施加的控制类型。 在nFlag中指定的数字提供了一个位值,根据下表确定选项:
值(可累加)描述
01不区分大小写搜索
12 不需要结束分隔符。指定当搜索未找到cEndDelim时, 返回从cBeginDelim位置开始的cSearchExpression内容。
24在返回的表达式中包含分隔符。

返回值

类型:String
字符型或变长二进制型。
结果数据类型由第一个参数的数据类型决定。
备注
默认情况下,搜索区分大小写,且必须找到分隔符(未指定nFlag值)。
如果cBeginDelim为空字符串,搜索将从cSearchExpression的开头进行,直到找到第一个cEndDelim。 如果cEndDelim为空字符串,StrExtract()将返回从cBeginDelim的第nOccurrence次出现到cSearchExpression结尾的字符串。
示例
X#
 1Clear
 2Set PATH TO (HOME(2) + 'Data\')   //设置客户表路径
 3Use customer // 任意表
 4?cursortoxml(0,"x",1,0,2)   // 生成包含表前2条记录XML的变量"x"
 5?x         // 显示XML
 6xmlproc(x,0)      // 解析XML
 7PROCEDURE xmlproc(x as String, nLev as Integer)   as void
 8LOCAL cTagName, cContents, mterm
 9DO WHILE .t.
10cTagName = StrExtract(x,"<",">")
11IF LEN(cTagName) = 0   // 未找到标签
12??' ',x   // 打印原始字符串作为内容
13EXIT
14ENDIF
15IF RIGHT(cTagName,1) = '/'   // 类似 "<region/>"
16cTagName = LEFT(cTagName, LEN(cTagName)-1)
17cContents=""
18mterm = "<"+cTagName+"/>"   // "<region/>"
19ELSE
20mterm = "</"+cTagName+">"   // "</region>"
21cContents = StrExtract(x,"<"+cTagName+">", mterm,1,2)
22ENDIF
23?REPLICATE("  ",nLev),nLev+1,PADR(cTagName,20)
24xmlproc(cContents, nLev+1)
25x = StrExtract(x, mterm)   // 获取剩余的xml
26ENDDO
参见