语法作用
返回字符串中的指定文本的出现位置,searchMode参数:0:返回第一次出现的位置索引,1:返回最后一次出现的位置索引,2:以表的形式返回所有出现的位置索引;索引位置从1开始。
XF.Str.PositionOf(str:string,findText:string,searchMode:int64)
函数代码
该函数的实现代码如下:
/// 返回字符串中的指定文本的出现位置,searchMode参数:0:返回第一次出现的位置索引,1:返回最后一次出现的位置索引,2:以表的形式返回所有出现的位置索引;索引位置从1开始
FUNCTION XF.Str.PositionOf = (str:string,findText:string,searchMode:int64) =>
VAR AllPosition =
DISTINCT(
FILTER(
SELECTCOLUMNS(
GENERATESERIES(1,LEN(str)),
"Position",FIND(findText,Str,[Value],BLANK())
),
[Position]<>BLANK()
)
)
VAR MinPosition = MINX(AllPosition,[Position])
VAR MaxPosition = MAXX(AllPosition,[Position])
RETURN
FILTER(
AllPosition,
SWITCH(
searchMode,
0,MinPosition=[Position],
1,MaxPosition=[Position],
2,TRUE(),
ERROR("searchMode参数的可选取值仅为:0、1、2")
)
)
应用示例
示例1:
查找字符串 "123,456,789" 中逗号 "," 的第一次出现位置。
XF.Str.PositionOf("123,456,789",",",0)
结果如下:
4
示例2:
查找字符串 "123,456,789" 中逗号 "," 的最后一次出现位置。
XF.Str.PositionOf("123,456,789",",",1)
结果如下:
8
示例3:
查找字符串 "123,456,789" 中逗号 "," 的所有出现位置。
XF.Str.PositionOf("123,456,789",",",2)
结果如下:
Position |
---|
4 |
8 |