字符串替换函数
以下文档是从 system.functions 系统表生成的。
format
引入于: v20.1
使用参数列表(字符串、整数等)中的值格式化 pattern 字符串,类似于 Python 中的格式化。模式字符串可以包含被花括号 {} 包围的替换字段。未包含在花括号内的任何内容都被视为文字文本,并按原样复制到输出中。文字花括号字符可以通过两个花括号进行转义:{{ 和 }}。字段名称可以是数字(从零开始)或为空(此时它们被隐式地赋予单调递增的数字)。
语法
参数
返回值
返回格式化后的字符串。 String
示例
编号占位符
隐式编号
overlay
引入于: v24.9
从 1 开始的索引 offset 处,将字符串 input 的一部分替换为另一个字符串 replace。
语法
参数
s— 输入字符串。Stringreplace— 替换字符串const Stringoffset— 一个整数类型Int(从 1 开始)。如果offset为负数,则从字符串s的末尾开始计数。Intlength— 可选。一个整数类型Int。length指定输入字符串s中要替换的片段的长度。如果未指定length,则从s中删除的字节数等于replace的长度;否则删除length个字节。Int
返回值
返回替换后的字符串。 String
示例
基本替换
使用长度进行替换
overlayUTF8
引入于: v24.9
从 1 开始的索引 offset 处,将字符串 s 的一部分替换为另一个字符串 replace。假定该字符串包含有效的 UTF-8 编码文本。如果违反了此假设,则不会抛出异常,结果未定义。
语法
参数
s— 输入字符串。Stringreplace— 替换字符串。const Stringoffset— 一个整数类型Int(从 1 开始)。如果offset为负数,则从输入字符串s的末尾开始计数。(U)Int*length— 可选。指定输入字符串s中要替换的片段的长度。如果未指定length,则从s中删除的字符数等于replace的长度,否则删除length个字符。(U)Int*
返回值
返回替换后的字符串。 String
示例
UTF-8 替换
printf
引入于:v24.8
printf 函数使用参数列表(字符串、整数、浮点数等)中的值格式化给定的字符串,类似于 C++ 中的 printf 函数。格式字符串可以包含以 % 字符开头的格式说明符。未包含在 % 和以下格式说明符中的任何内容都被视为文字文本,并按原样复制到输出中。文字 % 字符可以通过 %% 转义。
语法
参数
返回值
返回格式化后的字符串。 String
示例
C++ 风格的格式化
regexpQuoteMeta
引入于: v20.1
在正则表达式中具有特殊含义的字符前添加反斜杠:\0、\\、|、(、)、^、$、.、[、]、?、*、+、{、:、-。此实现与 re2::RE2::QuoteMeta 略有不同。它将零字节转义为 \0 而不是 \x00,并且它仅转义所需的字符。
语法
参数
s— 输入字符串,包含要为正则表达式转义的字符。String
返回值
返回一个转义了正则表达式特殊字符的字符串。 String
示例
转义正则表达式特殊字符
replaceAll
引入于:v1.1
将 haystack 中 pattern 子字符串的所有出现替换为 replacement 字符串。
语法
别名: replace
参数
haystack— 要搜索的输入字符串。Stringpattern— 要查找和替换的子字符串。const Stringreplacement— 用于替换模式的字符串。const String
返回值
返回一个替换了模式所有出现的字符串。 String
示例
替换所有出现项
replaceOne
引入于:v1.1
将 haystack 中 pattern 子字符串的第一个出现替换为 replacement 字符串。
语法
参数
haystack— 要搜索的输入字符串。Stringpattern— 要查找和替换的子字符串。const Stringreplacement— 用于替换模式的字符串。const String
返回值
返回一个替换了模式第一个出现的字符串。 String
示例
替换第一个出现项
replaceRegexpAll
引入于:v1.1
类似于 replaceRegexpOne,但替换模式的所有出现。作为例外,如果正则表达式作用于空子字符串,则替换不会进行超过一次。
语法
别名: REGEXP_REPLACE
参数
haystack— 要搜索的输入字符串。Stringpattern— 要查找的正则表达式模式。const Stringreplacement— 用于替换模式的字符串,可以包含替换。const String
返回值
返回一个替换了所有正则表达式匹配项的字符串。 String
示例
将所有字符替换为加倍版本
空子字符串替换示例
replaceRegexpOne
引入于:v1.1
将 haystack 中与正则表达式 pattern(re2 语法)匹配的子字符串的第一个出现替换为 replacement 字符串。replacement 可以包含替换 \0-\9。替换 \1-\9 对应于第 1 到第 9 个捕获组(子匹配),替换 \0 对应于整个匹配。要在 pattern 或 replacement 字符串中使用文字 \ 字符,请使用 \ 转义它。另外请记住,字符串文字需要额外的转义。
语法
参数
haystack— 要搜索的输入字符串。Stringpattern— 要查找的正则表达式模式。const Stringreplacement— 用于替换模式的字符串,可以包含替换。const String
返回值
返回一个替换了第一个正则表达式匹配项的字符串。 String
示例
将 ISO 日期转换为美式格式
将字符串复制十次
translate
引入于:v22.7
使用由 from 和 to 字符串定义的逐个字符映射替换字符串 s 中的字符。from 和 to 必须是常量 ASCII 字符串。如果 from 和 to 具有相同的大小,则 s 中第一个字符的每个出现都替换为 to 的第一个字符,first 的第二个字符在 s 中被替换为 to 的第二个字符,依此类推。如果 from 包含比 to 更多的字符,则 from 末尾在 to 中没有相应字符的所有字符都从 s 中删除。s 中的非 ASCII 字符不会被该函数修改。
语法
参数
s— 要转换的输入字符串。Stringfrom— 包含要替换字符的常量 ASCII 字符串。const Stringto— 包含替换字符的常量 ASCII 字符串。const String
返回值
返回应用了字符转换的字符串。 String
示例
字符映射
不同的长度
translateUTF8
引入于:v22.7
类似于 translate,但假定 s、from 和 to 是 UTF-8 编码的字符串。
语法
参数
s— UTF-8 输入字符串进行转换。Stringfrom— 包含要替换字符的常量 UTF-8 字符串。const Stringto— 包含替换字符的常量 UTF-8 字符串。const String
返回值
返回一个 String 数据类型值。 String
示例
UTF-8 字符转换