用于字符串替换的函数
下面的文档是从 system.functions 系统表生成的。
format
引入版本:v20.1
使用参数中给出的值(字符串、整数等)对 pattern 字符串进行格式化,类似于 Python 中的格式化方式。
pattern 字符串可以包含由花括号 {} 包围的替换字段。
不在花括号中的任何内容都被视为字面文本内容,并按原样复制到输出中。
字面量花括号字符可以通过两个花括号来转义:{{ 和 }}。
字段名称可以是数字(从 0 开始)或者为空(此时会隐式地按从 0 开始依次递增的编号进行标记)。
语法
参数
返回值
返回一个格式化的字符串。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 日期转换为美国日期格式
将字符串复制 10 次
translate
引入于:v22.7
使用由字符串 from 和 to 定义的一对一字符映射,替换字符串 s 中的字符。
from 和 to 必须是常量 ASCII 字符串。
如果 from 和 to 的长度相同,则 s 中每个出现的 from 的第一个字符都会被替换为 to 的第一个字符,from 的第二个字符在 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 字符替换