语法作用
将指定文本的每个字符作为分隔符来拆分字符串,返回单列的表。
XF.Str.SplitAny(str:string,delimiter:string)
函数代码
该函数的实现代码如下:
/// 将指定文本的每个字符作为分隔符来拆分字符串,返回单列的表
FUNCTION XF.Str.SplitAny=(str:string,delimiter:string)=>
VAR CurText = str
VAR DelimiterPositions =
SUMMARIZE(
GENERATE(
DISTINCT(
SELECTCOLUMNS(
GENERATESERIES(1,LEN(delimiter)),
"delimiterstr",MID(delimiter,[Value],1)
)
),
DISTINCT(
FILTER(
SELECTCOLUMNS(
GENERATESERIES(1,LEN(CurText)),
"Position",FIND([delimiterstr],CurText,[Value],BLANK())
),
[Position]<>BLANK()
)
)
),
[Position]
)
VAR SplitPositions =
UNION(
SELECTCOLUMNS({0},"Position",[Value]),
DelimiterPositions,
{LEN(CurText)+1}
)
VAR SplitPosition_AddIndex = ADDCOLUMNS(SplitPositions,"Index",RANKX(SplitPositions,[Position],,1))
RETURN
SELECTCOLUMNS(
GENERATESERIES(1,COUNTROWS(SplitPositions)-1),
"SubStr",
VAR Start_ = SUMMARIZE(FILTER(SplitPosition_AddIndex,[Index]=[Value]),[Position])+1
VAR End_ = SUMMARIZE(FILTER(SplitPosition_AddIndex,[Index]=[Value]+1),[Position])
RETURN
MID(CurText,Start_,End_-Start_)
)
应用示例
使用 "|" 与 "-" 拆分字符串:"Name|Address-PhoneNumber"。
XF.Str.SplitAny("Name|Address-PhoneNumber","-|")
结果如下:
SubStr |
---|
Name |
Address |
PhoneNumber |