字符串分割函数
以下文档由 system.functions 系统表自动生成。
alphaTokens
引入版本:v1.1
从 a-z 和 A-Z 范围中选择连续字节的子字符串,并返回所选子字符串的数组。
语法
别名:splitByAlpha
参数
s— 要分割的字符串。Stringmax_substrings— 可选。当max_substrings > 0时,返回的子字符串数量不超过max_substrings,否则函数将返回尽可能多的子字符串。Int64
返回值
返回 s 的所选子字符串数组。Array(String)
示例
使用示例
arrayStringConcat
引入版本:v1.1
将数组中各元素的字符串表示形式使用指定的分隔符连接起来。分隔符为可选参数,默认为空字符串。
语法
参数
arr— 要连接的数组。Array(T)separator— 可选参数。分隔符字符串。默认为空字符串。const String
返回值
返回连接后的字符串。String
示例
使用示例
extractAllGroupsVertical
引入版本:v20.5
使用正则表达式匹配字符串中的所有分组,返回一个二维数组,其中每个数组包含一次匹配中所有捕获分组的内容,按照匹配在输入字符串中出现的顺序排列。
语法
别名:extractAllGroups
参数
s— 待提取的输入字符串。String或FixedStringregexp— 用于匹配的正则表达式。const String或const FixedString
返回值
返回一个二维数组,其中每个内部数组包含一次匹配中的所有捕获分组。每次匹配生成一个数组,其元素按顺序对应正则表达式中的捕获分组(分组 1、分组 2 等)。如果未找到匹配项,则返回空数组。Array(Array(String))
示例
使用示例
ngrams
引入版本:v21.11
将 UTF-8 字符串拆分为包含 ngramsize 个符号的 n-gram。
语法
参数
s— 输入字符串。String或FixedStringngram_size— n-gram 的大小。const UInt8/16/32/64
返回值
返回包含 n-gram 的数组。Array(String)
示例
使用示例
splitByChar
引入版本:v1.1
将由指定的单字符常量字符串 separator 分隔的字符串拆分为子字符串数组。
如果分隔符出现在字符串的开头或结尾,或者存在多个连续的分隔符,则可能会产生空子字符串。
设置 splitby_max_substrings_includes_remaining_string(默认值:0)用于控制当参数 max_substrings > 0 时,是否将剩余字符串包含在结果数组的最后一个元素中。
在以下情况下可能会产生空子字符串:
- 分隔符出现在字符串的开头或结尾
- 存在多个连续的分隔符
- 原始字符串
s为空
语法
参数
separator— 分隔符,必须是单字节字符。Strings— 要拆分的字符串。Stringmax_substrings— 可选参数。如果max_substrings > 0,返回的数组最多包含max_substrings个子字符串,否则函数将返回尽可能多的子字符串。默认值为0。Int64
返回值
返回由选定子字符串组成的数组。Array(String)
示例
使用示例
splitByNonAlpha
引入版本:v21.9
将字符串按空格和标点符号分隔并拆分为子字符串数组。
设置 splitby_max_substrings_includes_remaining_string(默认值:0)用于控制当参数 max_substrings > 0 时,是否将剩余字符串包含在结果数组的最后一个元素中。
语法
参数
s— 要拆分的字符串。Stringmax_substrings— 可选参数。当max_substrings > 0时,返回的子字符串数量不超过max_substrings,否则函数将返回尽可能多的子字符串。默认值:0。Int64
返回值
返回 s 拆分后的子字符串数组。Array(String)
示例
使用示例
splitByRegexp
引入版本:v21.6
根据提供的正则表达式将字符串拆分为子字符串数组。 如果提供的正则表达式为空,则将字符串拆分为单个字符的数组。 如果正则表达式未找到匹配项,则字符串不会被拆分。
在以下情况下可能会产生空子字符串:
- 非空正则表达式在字符串的开头或结尾匹配
- 存在多个连续的非空正则表达式匹配
- 原始字符串为空而正则表达式不为空。
设置 splitby_max_substrings_includes_remaining_string(默认值:0)控制当参数 max_substrings > 0 时,剩余字符串是否包含在结果数组的最后一个元素中。
语法
参数
regexp— 正则表达式。常量。String或FixedStrings— 要拆分的字符串。Stringmax_substrings— 可选。当max_substrings > 0时,返回的子字符串数量不超过max_substrings,否则函数将返回尽可能多的子字符串。默认值:0。Int64
返回值
返回 s 的子字符串数组。Array(String)
示例
使用示例
空正则表达式
splitByString
引入版本:v1.1
使用由多个字符组成的常量 separator 将字符串分割为子字符串数组。
如果 separator 为空字符串,则将字符串 s 分割为单个字符的数组。
在以下情况下可能会产生空子字符串:
- 非空分隔符出现在字符串的开头或结尾
- 存在多个连续的非空分隔符
- 原始字符串
s为空而分隔符不为空
设置 splitby_max_substrings_includes_remaining_string(默认值:0)用于控制当参数 max_substrings > 0 时,是否将剩余字符串包含在结果数组的最后一个元素中。
语法
参数
separator— 分隔符。Strings— 要分割的字符串。Stringmax_substrings— 可选参数。当max_substrings > 0时,返回的子字符串数量不超过max_substrings,否则函数将返回尽可能多的子字符串。默认值:0。Int64
返回值
返回 s 的子字符串数组 Array(String)
示例
使用示例
空分隔符
splitByWhitespace
引入版本:v21.9
将由空白字符分隔的字符串拆分为子字符串数组。
设置 splitby_max_substrings_includes_remaining_string(默认值:0)用于控制当参数 max_substrings > 0 时,是否将剩余字符串包含在结果数组的最后一个元素中。
语法
参数
s— 要拆分的字符串。Stringmax_substrings— 可选参数。当max_substrings > 0时,返回的子字符串数量不超过max_substrings,否则函数将返回尽可能多的子字符串。默认值:0。Int64
返回值
返回 s 拆分后的子字符串数组。Array(String)
示例
使用示例
tokens
引入版本:v21.11
使用指定的分词器将字符串拆分为标记(token)。 默认分词器使用非字母数字的 ASCII 字符作为分隔符。
对于 split 分词器,如果标记不构成前缀码,您可能希望匹配时优先使用较长的分隔符。
为此,请按长度降序传递分隔符。
例如,使用 separators = ['%21', '%'] 时,字符串 %21abc 将被分词为 ['abc'],而使用 separators = ['%', '%21'] 则会分词为 ['21ac'](这可能不是您想要的结果)。
语法
参数
value— 输入字符串。String或FixedStringtokenizer— 要使用的分词器。有效参数为splitByNonAlpha、ngrams、splitByString、array和sparseGrams。可选参数,如果未显式设置,默认为splitByNonAlpha。const Stringngrams— 仅当参数tokenizer为ngrams时相关:定义 n-gram 长度的可选参数。如果未显式设置,默认为3。const UInt8separators— 仅当参数tokenizer为split时相关:定义分隔符字符串的可选参数。如果未显式设置,默认为[' ']。const Array(String)
返回值
返回从输入字符串生成的标记数组。Array
示例
默认分词器
N-gram 分词器