Splitter
Splitter
概述
该分类下的所有函数均返回一个仅有一参的函数,函数定义:
(t as nullable text) as list
当t
为null
,返回空列表,即{}
。
Splitter.SplitByNothing
Splitter.SplitByNothing() as function
返回函数用法:将文本作为列表的唯一一个元素填入列表。
该函数用法等价于:() as function => (t as nullable) as list => {t}
。
Splitter.SplitByNothing()(null)
Splitter.SplitTextByAnyDelimiter
Splitter.SplitTextByAnyDelimiter(
delimiters as list,
optional quoteStyle as nullable number,
optional startAtEnd as nullable logical
) as function
返回函数用法:使用delimiters
中的任意分隔符将文本拆分成列表。
参数delimiters
:分隔符列表,列表项可以是多字符文本。
参数quoteStyle
:指定引号的行为,可以是QuoteStyle.Type
枚举值,默认使用QuoteStyle.Csv
(引号作为一个整体看待,引号内的内容不会进行拆分且结果中不会包含引号。如果出现单个引号,那么会根据扫描方向将单个引号之前或之后的内容作为整体看待)。
参数startAtEnd
:从开头或结尾扫描文本,取值:
- 不指定、
null
、false
:从前往后。 true
:从后往前。
Splitter.SplitTextByAnyDelimiter({"+", "-"})("1+2-3+4+5-678+88")
Splitter.SplitTextByAnyDelimiter({"+", "-"}, QuoteStyle.None)("1+2""-3+4""+5-""678+88")
// 单个引号之后的内容视为整体,不会拆分
Splitter.SplitTextByAnyDelimiter({"+", "-"}, QuoteStyle.Csv)("1+2""-3+4""+5-""678+88")
Splitter.SplitTextByAnyDelimiter({"+-", "-+"}, null, false)("1-+-2")
Splitter.SplitTextByAnyDelimiter({"+-", "-+"}, null, true)("1-+-2")
Splitter.SplitTextByCharacterTransition
Splitter.SplitTextByCharacterTransition(
before as anynonnull,
after as anynonnull
) as function
返回函数用法:当文本相邻字符分别属于before
和after
中的项时,以两个字符的间隙为界限进行拆分。
参数before
和after
必须是单字符组成的列表。
Splitter.SplitTextByCharacterTransition({"0".."9"}, {"a".."z"})("123abc456efg789")
Splitter.SplitTextByDelimiter
Splitter.SplitTextByDelimiter(
delimiter as text,
optional quoteStyle as nullable number
) as function
返回函数用法:以文本delimiter
作为分隔对文本进行拆分。
参数delimiter
是至少一个字符的文本。
参数quoteStyle
:指定引号的行为,可以是QuoteStyle.Type
枚举值,默认使用QuoteStyle.Csv
(引号作为一个整体看待,引号内的内容不会进行拆分且结果中不会包含引号。如果出现单个引号,那么会根据扫描方向将单个引号之前或之后的内容作为整体看待)。
Splitter.SplitTextByDelimiter("c")("123abc456ecg789")
Splitter.SplitTextByDelimiter("cd")("123abcd456efg789")
Splitter.SplitTextByDelimiter("cd")("123""abcd""456efg789")
Splitter.SplitTextByDelimiter("cd", QuoteStyle.None)("123""abcd""456efg789")
Splitter.SplitTextByDelimiter("cd")("123""abcd""456""cdg789")
Splitter.SplitTextByEachDelimiter
Splitter.SplitTextByEachDelimiter(
delimiters as list,
optional quoteStyle as nullable number,
optional startAtEnd as nullable logical
) as function
返回函数用法:按照顺序使用delimiters
中的文本作为分隔符对文本进行拆分。
参数delimiters
:严格按照顺序进行拆分且每个列表项仅使用一次。
参数quoteStyle
:指定引号的行为,可以是QuoteStyle.Type
枚举值,默认使用QuoteStyle.Csv
(引号作为一个整体看待,引号内的内容不会进行拆分且结果中不会包含引号。如果出现单个引号,那么会根据扫描方向将单个引号之前或之后的内容作为整体看待)。
参数startAtEnd
:从开头或结尾扫描文本,取值:
- 不指定、
null
、false
:从前往后。 true
:从后往前。
Splitter.SplitTextByEachDelimiter({"+", "*", "+-", "-+"})("1+2+3-4-5*6+7+8+-9+-+0")
Splitter.SplitTextByLengths
Splitter.SplitTextByLengths(
lengths as list,
optional startAtEnd as nullable logical
) as function
返回函数用法:按照顺序使用lengths
中的长度对文本进行拆分。
参数lengths
:严格按照顺序进行拆分且每个列表项仅使用一次。
- 如果文本长度超过
lengths
中的长度之和,会对文本进行截取。 - 如果文本长度不足,会生成对结果列表项填充空文本,但是项数和
lengths
一样。
参数startAtEnd
:从开头或结尾扫描文本,取值:
- 不指定、
null
、false
:从前往后。 true
:从后往前。
Splitter.SplitTextByLengths({2, 3, 0, 99})("1234567890")
Splitter.SplitTextByLengths({2, 3, 0, 99})("123")
Splitter.SplitTextByPositions
Splitter.SplitTextByPositions(
positions as list,
optional startAtEnd as nullable logical
) as function
返回函数用法:按照positions
的每个元素及之后的一个元素指定的位置选择文本(含开头,不含结尾)。
参数positions
:从0开始索引字符且指定的位置列表必须是从小到大。最后一个项会选择对应位置及之后的剩余文本。如果指定的索引超过文本长度,会生成对项填充空文本,最终结果和positions
的项数一致。
参数startAtEnd
:从开头或结尾扫描文本,取值:
- 不指定、
null
、false
:从前往后。 true
:从后往前。
Splitter.SplitTextByPositions({1, 2, 5})("0123456789")
Splitter.SplitTextByPositions({1, 2, 5, 9, 99})("0123456789")
Splitter.SplitTextByRanges
Splitter.SplitTextByRanges(
ranges as list,
optional startAtEnd as nullable logical
) as function
返回函数用法:根据ranges
中成对的开始位置和长度来取文本。
参数ranges
:必须是{开始位置, 截取长度}
组成的列表。如果指定的位置超过文本最大索引或截取长度指定为0,将对结果项填充空文本。
参数startAtEnd
:从开头或结尾扫描文本,取值:
- 不指定、
null
、false
:从前往后。 true
:从后往前。
Splitter.SplitTextByRanges({{1, 3}, {3, 6}, {2, 0}, {99, 99}})("0123456789")
Splitter.SplitTextByRepeatedLengths
Splitter.SplitTextByRepeatedLengths(
length as number,
optional startAtEnd as nullable logical
) as function
返回函数用法:按照扫描顺序对文本的每length
个字符进行拆分。
参数startAtEnd
:从开头或结尾扫描文本,取值:
- 不指定、
null
、false
:从前往后。 true
:从后往前。
Splitter.SplitTextByRepeatedLengths(3)("0123456789")
Splitter.SplitTextByRepeatedLengths(3, true)("0123456789")
Splitter.SplitTextByWhitespace
Splitter.SplitTextByWhitespace(optional quoteStyle as nullable number) as function
返回函数用法:以文本中的空白符作为分隔符进行拆分。
注意:空白符不仅仅只是常见的空格、回车、换行,具体参见词法结构-空白。
参数quoteStyle
:指定引号的行为,可以是QuoteStyle.Type
枚举值,默认使用QuoteStyle.Csv
(引号作为一个整体看待,引号内的内容不会进行拆分且结果中不会包含引号。如果出现单个引号,那么会根据扫描方向将单个引号之前或之后的内容作为整体看待)。
Splitter.SplitTextByWhitespace()("01 23 45""6#(lf)7""8#(cr)9")