字符串分割函数
以下文档根据 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 字符串拆分为长度为 N 的 n-gram。
语法
参数
s— 输入字符串。String或FixedStringN— n-gram 的长度。const UInt8/16/32/64
返回值
返回一个由 n-gram 组成的数组。Array(String)
示例
使用示例
splitByChar
引入版本:v1.1
将以指定的、长度恰为一个字符的常量字符串 separator 作为分隔符的字符串拆分为子字符串数组。
如果分隔符出现在字符串的开头或结尾,或者存在多个连续分隔符,则可能产生空子字符串。
SETTING 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为空,而分隔符不为空
当参数 max_substrings > 0 时,splitby_max_substrings_includes_remaining_string(默认值: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 起引入
使用指定的 tokenizer 将字符串拆分为若干 token。 默认的 tokenizer 会将非字母数字的 ASCII 字符视为分隔符。
在使用 split tokenizer 时,如果这些 token 并不构成一个 prefix code,通常会希望在匹配时优先使用更长的分隔符。
为此,请按分隔符长度从长到短的顺序传入分隔符。
例如,当 separators = ['%21', '%'] 时,字符串 %21abc 会被分词为 ['abc'];而当 separators = ['%', '%21'] 时,则会被分词为 ['21ac'](这很可能不是你想要的结果)。
语法
参数
value— 输入字符串。String或FixedStringtokenizer— 要使用的分词器(tokenizer)。可选值包括splitByNonAlpha、ngrams、splitByString、array和sparseGrams。可选参数,如果未显式设置,则默认为splitByNonAlpha。const Stringngrams— 仅当参数tokenizer为ngrams时生效:用于定义 n-grams 长度的可选参数。取值必须在 1 到 8 之间。如果未显式设置,则默认为3。const UInt8separators— 仅当参数tokenizer为split时生效:用于定义分隔字符串的可选参数。如果未显式设置,则默认为[' ']。const Array(String)
返回值
返回由输入字符串拆分得到的 token 数组。Array
示例
默认分词器(tokenizer)
N-gram 分词器