字符串操作函数
empty
检查输入字符串是否为空。如果字符串包含至少一个字节,即使该字节是空格或空字节,也被视为非空。
语法
参数
x
— 输入值。 字符串。
返回值
- 为空字符串时返回
1
,非空字符串时返回0
。 UInt8。
示例
结果:
notEmpty
检查输入字符串是否非空。如果字符串包含至少一个字节,即使该字节是空格或空字节,也被视为非空。
语法
参数
x
— 输入值。 字符串。
返回值
- 非空字符串时返回
1
,空字符串时返回0
。 UInt8。
示例
结果:
length
返回字符串的字节长度而不是字符或Unicode代码点的数量。该函数也适用于数组。
别名: OCTET_LENGTH
语法
参数
返回值
- 字符串或数组
s
的字节长度。 UInt64。
示例
查询:
结果:
查询:
结果:
lengthUTF8
返回字符串在Unicode代码点中的长度,而不是在字节或字符中。假设字符串包含有效的UTF-8编码文本。如果该假设被违反,则不会抛出异常,结果是未定义的。
别名:
CHAR_LENGTH
CHARACTER_LENGTH
语法
参数
s
— 包含有效UTF-8编码文本的字符串。 字符串。
返回值
- 字符串
s
在Unicode代码点中的长度。 UInt64。
示例
查询:
结果:
left
返回字符串 s
的子字符串,指定的 offset
从左侧开始。
语法
参数
返回值
- 对于正的
offset
:返回s
的子字符串,包含offset
个字节,从字符串的左侧开始。 - 对于负的
offset
:返回s
的子字符串,包含length(s) - |offset|
个字节,从字符串的左侧开始。 - 如果
length
为 0,则返回空字符串。
示例
查询:
结果:
查询:
结果:
leftUTF8
返回UTF-8编码字符串 s
的子字符串,指定的 offset
从左侧开始。
语法
参数
返回值
- 对于正的
offset
:返回s
的子字符串,包含offset
个字节,从字符串的左侧开始。 - 对于负的
offset
:返回s
的子字符串,包含length(s) - |offset|
个字节,从字符串的左侧开始。 - 如果
length
为 0,则返回空字符串。
示例
查询:
结果:
查询:
结果:
leftPad
从左侧用空格或指定的字符串(如有必要可多次填充)填充字符串,直到结果字符串达到指定的 length
。
语法
别名: LPAD
参数
string
— 应该被填充的输入字符串。 字符串。length
— 结果字符串的长度。 UInt或Int。如果值小于输入字符串长度,则输入字符串将缩短为length
个字符。pad_string
— 用于填充输入字符串的字符串。 字符串。可选。如果未指定,则对输入字符串进行空格填充。
返回值
- 给定长度的左填充字符串。 字符串。
示例
结果:
leftPadUTF8
从左侧用空格或指定的字符串(如有必要可多次填充)填充字符串,直到结果字符串达到指定的长度。与 leftPad 不同,测量字符串长度是按代码点计算的。
语法
参数
string
— 应该被填充的输入字符串。 字符串。length
— 结果字符串的长度。 UInt或Int。如果值小于输入字符串长度,则输入字符串将缩短为length
个字符。pad_string
— 用于填充输入字符串的字符串。 字符串。可选。如果未指定,则对输入字符串进行空格填充。
返回值
- 给定长度的左填充字符串。 字符串。
示例
结果:
right
返回字符串 s
的子字符串,指定的 offset
从右侧开始。
语法
参数
返回值
- 对于正的
offset
:返回s
的子字符串,包含offset
个字节,从字符串的右侧开始。 - 对于负的
offset
:返回s
的子字符串,包含length(s) - |offset|
个字节,从字符串的右侧开始。 - 如果
length
为 0,则返回空字符串。
示例
查询:
结果:
查询:
结果:
rightUTF8
返回UTF-8编码字符串 s
的子字符串,指定的 offset
从右侧开始。
语法
参数
返回值
- 对于正的
offset
:返回s
的子字符串,包含offset
个字节,从字符串的右侧开始。 - 对于负的
offset
:返回s
的子字符串,包含length(s) - |offset|
个字节,从字符串的右侧开始。 - 如果
length
为 0,则返回空字符串。
示例
查询:
结果:
查询:
结果:
rightPad
从右侧用空格或指定的字符串(如有必要可多次填充)填充字符串,直到结果字符串达到指定的 length
。
语法
别名: RPAD
参数
string
— 应该被填充的输入字符串。 字符串。length
— 结果字符串的长度。 UInt或Int。如果值小于输入字符串长度,则输入字符串将缩短为length
个字符。pad_string
— 用于填充输入字符串的字符串。 字符串。可选。如果未指定,则对输入字符串进行空格填充。
返回值
- 给定长度的填充字符串。 字符串。
示例
结果:
rightPadUTF8
从右侧用空格或指定的字符串(如有必要可多次填充)填充字符串,直到结果字符串达到指定的长度。与 rightPad 不同,测量字符串长度是按代码点计算的。
语法
参数
string
— 应该被填充的输入字符串。 字符串。length
— 结果字符串的长度。 UInt或Int。如果值小于输入字符串长度,则输入字符串将缩短为length
个字符。pad_string
— 用于填充输入字符串的字符串。 字符串。可选。如果未指定,则对输入字符串进行空格填充。
返回值
- 给定长度的填充字符串。 字符串。
示例
结果:
compareSubstrings
按字典顺序比较两个字符串。
语法
参数
string1
— 第一个待比较的字符串。 字符串string2
- 第二个待比较的字符串。 字符串string1_offset
— 在string1
中开始比较的位置(从零开始)。 UInt*。string2_offset
— 在string2
中开始比较的位置(从零开始)。 UInt*。num_bytes
— 在两个字符串中要比较的最大字节数。如果string_offset
+num_bytes
超过输入字符串的结尾,num_bytes
将相应减少。 UInt*。
返回值
- -1 — 如果
string1
[string1_offset
:string1_offset
+num_bytes
] <string2
[string2_offset
:string2_offset
+num_bytes
]。 - 0 — 如果
string1
[string1_offset
:string1_offset
+num_bytes
] =string2
[string2_offset
:string2_offset
+num_bytes
]。 - 1 — 如果
string1
[string1_offset
:string1_offset
+num_bytes
] >string2
[string2_offset
:string2_offset
+num_bytes
]。
示例
查询:
结果:
lower
将字符串中的ASCII拉丁符号转换为小写。
语法
别名: lcase
参数
input
: 字符串类型 字符串。
返回值
- 字符串 数据类型的值。
示例
查询:
upper
将字符串中的ASCII拉丁符号转换为大写。
语法
别名: ucase
参数
input
— 字符串类型 字符串。
返回值
- 字符串 数据类型的值。
示例
查询:
lowerUTF8
将字符串转换为小写,假设字符串包含有效的UTF-8编码文本。如果该假设被违反,则不会抛出异常,结果是未定义的。
不会检测语言,例如,对于土耳其语,结果可能不完全正确(i/İ vs. i/I)。如果某个代码点的UTF-8字节序列的大写和小写长度不同(如 ẞ
和 ß
),则该代码点的结果可能不正确。
语法
参数
input
— 字符串类型 字符串。
返回值
- 字符串 数据类型的值。
示例
查询:
结果:
upperUTF8
将字符串转换为大写,假设字符串包含有效的UTF-8编码文本。如果该假设被违反,则不会抛出异常,结果是未定义的。
不会检测语言,例如,对于土耳其语,结果可能不完全正确(i/İ vs. i/I)。如果某个代码点的UTF-8字节序列的大写和小写长度不同(如 ẞ
和 ß
),则该代码点的结果可能不正确。
语法
参数
input
— 字符串类型 字符串。
返回值
- 字符串 数据类型的值。
示例
查询:
结果:
isValidUTF8
如果字节集合构成有效的UTF-8编码文本,则返回 1;否则返回 0。
语法
参数
input
— 字符串类型 字符串。
返回值
- 如果字节集合构成有效的UTF-8编码文本,则返回
1
,否则返回0
。
查询:
结果:
toValidUTF8
将无效的UTF-8字符替换为 �
(U+FFFD) 字符。所有连在一起的无效字符都会合并成一个替代字符。
语法
参数
input_string
— 任何字节集合,表示为 字符串 数据类型对象。
返回值
- 一个有效的UTF-8字符串。
示例
repeat
按指定次数与自身连接字符串。
语法
别名: REPEAT
参数
s
— 要重复的字符串。 字符串。n
— 重复字符串的次数。 UInt* 或 Int*。
返回值
一个包含字符串 s
重复 n
次的字符串。如果 n
<= 0,函数返回空字符串。 字符串。
示例
结果:
space
连接一个空格(
),按指定次数与自身连接。
语法
别名: SPACE
.
参数
n
— 重复空格的次数。 UInt* 或 Int*。
返回值
一个包含字符串
重复 n
次的字符串。如果 n
<= 0,函数返回空字符串。 字符串。
示例
查询:
结果:
reverse
反转字符串中的字节序列。
reverseUTF8
反转字符串中的Unicode代码点序列。假设字符串包含有效的UTF-8编码文本。如果该假设被违反,则不会抛出异常,结果是未定义的。
concat
连接给定的参数。
语法
参数
任意类型的值。
非 字符串 或 固定字符串 类型的参数会使用其默认序列化转换为字符串。由于这会降低性能,因此不建议使用非String/FixedString参数。
返回值
由连接参数创建的字符串。
如果任何参数为 NULL
,函数将返回 NULL
。
示例
查询:
结果:
查询:
结果:
||
运算符使用 ||
运算符进行字符串连接,作为 concat()
的简洁替代。例如,'Hello, ' || 'World!'
相当于 concat('Hello, ', 'World!')
。
concatAssumeInjective
与 concat 相似,但假设 concat(s1, s2, ...) → sn
是单射。可以用于优化 GROUP BY。
如果函数对不同的参数返回不同的结果,则称该函数为单射。换句话说:不同的参数永远不会产生相同的结果。
语法
参数
字符串或固定字符串类型的值。
返回值
由连接参数创建的字符串。
如果任何参数值为 NULL
,该函数将返回 NULL
。
示例
输入表:
结果:
concatWithSeparator
用给定的分隔符连接给定的字符串。
语法
别名: concat_ws
参数
- sep — 分隔符。 常量 字符串 或 固定字符串。
- exprN — 要连接的表达式。非 字符串 或 固定字符串 类型的参数会使用其默认序列化转换为字符串。由于这会降低性能,因此不建议使用非String/FixedString参数。
返回值
由连接参数创建的字符串。
如果任何参数值为 NULL
,该函数将返回 NULL
。
示例
结果:
concatWithSeparatorAssumeInjective
与 concatWithSeparator
类似,但假设 concatWithSeparator(sep, expr1, expr2, expr3...) → result
是单射。可以用于优化 GROUP BY。
如果函数对不同的参数返回不同的结果,则称该函数为单射。换句话说:不同的参数永远不会产生相同的结果。
substring
返回字符串 s
的子字符串,该子字符串始于指定字节索引 offset
。字节计数从 1 开始。如果 offset
为 0,将返回空字符串。如果 offset
为负,则子字符串从字符串末尾的 pos
个字符开始,而不是从开头开始。可选参数 length
指定返回的子字符串的最大字节数。
语法
别名:
substr
mid
byteSlice
参数
返回值
一个包含 s
的子字符串,长度为 length
,从索引 offset
开始。 字符串。
示例
结果:
substringUTF8
返回字符串 s
的子字符串,该子字符串始于指定的字节索引 offset
以处理Unicode代码点。字节计数从1开始。如果 offset
为0,则返回空字符串。如果 offset
为负,则子字符串从字符串末尾的 pos
个字符开始,而不是从开头开始。可选参数 length
指定返回的子字符串的最大字节数。
假设字符串包含有效的UTF-8编码文本。如果该假设被违反,则不会抛出异常,结果是未定义的。
语法
参数
返回值
包含 s
的子字符串,长度为 length
,从索引 offset
开始。
实现细节
假设字符串包含有效的UTF-8编码文本。如果该假设被违反,则不会抛出异常,结果是未定义的。
示例
substringIndex
返回字符串 s
在 count
次出现分隔符 delim
之前的子字符串,如同在Spark或MySQL中一样。
语法
别名: SUBSTRING_INDEX
参数
- s — 要提取子字符串的字符串。 字符串。
- delim — 分隔符字符。 字符串。
- count — 在提取子字符串之前要计数的分隔符出现的次数。如果计数为正,则返回最后一个分隔符左侧的所有内容(从左计数)。如果计数为负,则返回最后一个分隔符右侧的所有内容(从右计数)。 UInt 或 Int
示例
结果:
substringIndexUTF8
返回字符串 s
在 count
次出现分隔符 delim
之前的子字符串,专门针对Unicode代码点。
假设字符串包含有效的UTF-8编码文本。如果该假设被违反,则不会抛出异常,结果是未定义的。
语法
参数
s
— 要提取子字符串的字符串。 字符串。delim
— 分隔符字符。 字符串。count
— 在提取子字符串之前要计数的分隔符出现的次数。如果计数为正,则返回最后一个分隔符左侧的所有内容(从左计数)。如果计数为负,则返回最后一个分隔符右侧的所有内容(从右计数)。 UInt 或 Int
返回值
在 count
次出现 delim
之前的子字符串 字符串 的 s
。
实现细节
假设字符串包含有效的UTF-8编码文本。如果该假设被违反,则不会抛出异常,结果是未定义的。
示例
appendTrailingCharIfAbsent
如果 s
非空且不以字符 c
结尾,则将字符 c
附加到字符串 s
。
语法
convertCharset
返回将字符串 s
从编码 from
转换为编码 to
的结果。
语法
base58Encode
使用 Base58 中的“比特币”字母表对字符串进行编码。
语法
参数
plaintext
— 字符串 列或常量。
返回值
示例
结果:
base58Decode
接受一个字符串,并使用 Base58 编码方案中的“比特币”字母表对其进行解码。
语法
参数
返回值
- 一个包含参数解码值的字符串。 字符串。
示例
结果:
tryBase58Decode
像 base58Decode
但在出错时返回空字符串。
语法
参数
返回值
- 一个包含参数解码值的字符串。
示例
查询:
base64Encode
根据 RFC 4648 将字符串或固定字符串编码为Base64。
别名: TO_BASE64
.
语法
参数
plaintext
— 字符串 列或常量。
返回值
- 一个包含参数编码值的字符串。
示例
结果:
base64URLEncode
将URL(String或FixedString)编码为base64,并进行URL特定的修改,遵循RFC 4648。
语法
参数
url
— String 列或常量。
返回值
- 包含参数编码值的字符串。
示例
结果:
base64Decode
接受一个字符串并将其从base64解码,遵循RFC 4648。在发生错误时抛出异常。
别名:FROM_BASE64
。
语法
参数
encoded
— String 列或常量。如果字符串不是有效的Base64编码值,则会抛出异常。
返回值
- 包含参数解码值的字符串。
示例
结果:
base64URLDecode
接受一个base64编码的URL,并根据RFC 4648对其进行解码,进行URL特定的修改。在发生错误时抛出异常。
语法
参数
encodedURL
— String 列或常量。如果字符串不是有效的Base64编码值,并且带有URL特定的修改,则会抛出异常。
返回值
- 包含参数解码值的字符串。
示例
结果:
tryBase64Decode
像 base64Decode
,但在发生错误时返回空字符串。
语法
参数
encoded
— String 列或常量。如果字符串不是有效的Base64编码值,则返回空字符串。
返回值
- 包含参数解码值的字符串。
示例
查询:
tryBase64URLDecode
像 base64URLDecode
,但在发生错误时返回空字符串。
语法
参数
encodedURL
— String 列或常量。如果字符串不是有效的Base64编码值,并且带有URL特定的修改,则返回空字符串。
返回值
- 包含参数解码值的字符串。
示例
查询:
endsWith
返回字符串 str
是否以 suffix
结尾。
语法
endsWithUTF8
返回字符串 str
是否以 suffix
结尾,endsWithUTF8
与 endsWith
的区别在于 endsWithUTF8
通过UTF-8字符来匹配 str
和 suffix
。
语法
示例
结果:
startsWith
返回字符串 str
是否以 prefix
开头。
语法
示例
startsWithUTF8
返回字符串 str
是否以 prefix
开头,startsWithUTF8
与 startsWith
的区别在于 startsWithUTF8
通过UTF-8字符来匹配 str
和 suffix
。
示例
结果:
trim
删除字符串开头或结尾处的指定字符。如果没有特别说明,函数将删除空格(ASCII字符32)。
语法
参数
返回值
无前导和/或尾部指定字符的字符串。 String。
示例
结果:
trimLeft
删除字符串开头处连续出现的空格(ASCII字符32)。
语法
别名:ltrim
。
参数
返回值
无前导常规空格的字符串。 String。
示例
结果:
trimRight
删除字符串结尾处连续出现的空格(ASCII字符32)。
语法
别名:rtrim
。
参数
返回值
无尾部常规空格的字符串。 String。
示例
结果:
trimBoth
从字符串的两端删除连续出现的空格(ASCII字符32)。
语法
别名:trim
。
参数
返回值
无前导和尾部常规空格的字符串。 String。
示例
结果:
CRC32
返回字符串的CRC32校验和,使用CRC-32-IEEE 802.3多项式和初始值0xffffffff
(zlib实现)。
结果类型为UInt32。
CRC32IEEE
返回字符串的CRC32校验和,使用CRC-32-IEEE 802.3多项式。
结果类型为UInt32。
CRC64
返回字符串的CRC64校验和,使用CRC-64-ECMA多项式。
结果类型为UInt64。
normalizeUTF8NFC
将字符串转换为NFC标准化形式,假设字符串是有效的UTF8编码文本。
语法
参数
words
— UTF8编码的输入字符串。 String。
返回值
- 转换为NFC标准化形式的字符串。 String。
示例
结果:
normalizeUTF8NFD
将字符串转换为NFD标准化形式,假设字符串是有效的UTF8编码文本。
语法
参数
words
— UTF8编码的输入字符串。 String。
返回值
- 转换为NFD标准化形式的字符串。 String。
示例
结果:
normalizeUTF8NFKC
将字符串转换为NFKC标准化形式,假设字符串是有效的UTF8编码文本。
语法
参数
words
— UTF8编码的输入字符串。 String。
返回值
- 转换为NFKC标准化形式的字符串。 String。
示例
结果:
normalizeUTF8NFKD
将字符串转换为NFKD标准化形式,假设字符串是有效的UTF8编码文本。
语法
参数
words
— UTF8编码的输入字符串。 String。
返回值
- 转换为NFKD标准化形式的字符串。 String。
示例
结果:
encodeXMLComponent
转义在XML中具有特殊含义的字符,以便它们可以随后放入XML文本节点或属性中。
以下字符被替换:<
、&
、>
、"
、'
。
另请参阅XML和HTML字符实体引用列表。
语法
参数
x
— 输入字符串。 String。
返回值
- 转义后的字符串。 String。
示例
结果:
decodeXMLComponent
取消转义XML中具有特殊含义的子字符串。这些子字符串是:"
&
'
>
<
此函数还将数字字符引用替换为Unicode字符。 支持十进制(如✓
)和十六进制(✓
)形式。
语法
参数
x
— 输入字符串。 String。
返回值
- 取消转义的字符串。 String。
示例
结果:
decodeHTMLComponent
取消转义HTML中具有特殊含义的子字符串。例如:ℏ
>
♦
♥
<
等。
此函数还将数字字符引用替换为Unicode字符。 支持十进制(如✓
)和十六进制(✓
)形式。
语法
参数
x
— 输入字符串。 String。
返回值
- 取消转义的字符串。 String。
示例
结果:
extractTextFromHTML
此函数从HTML或XHTML中提取纯文本。
它并不完全符合HTML、XML或XHTML规格,但实现合理准确且快速。规则如下:
- 跳过注释。例如:
<!-- test -->
。注释必须以-->
结束。不允许嵌套注释。 注意:像<!-->
和<!--->
这样的结构在HTML中不是有效的注释,但它们会被其他规则跳过。 - CDATA将逐字粘贴。注意:CDATA是特定于XML/XHTML的,并在“尽力而为”的基础上进行处理。
script
和style
元素及其所有内容被移除。注意:假定结束标签不能出现在内容中。例如,在JS字符串字面量中必须像"<\/script>"
一样转义。 注意:在script
或style
内部可以有注释和CDATA,因此不会在CDATA内部搜索结束标签。例如:<script><![CDATA[</script>]]></script>
。但是,它们仍会在注释内部被搜索。有时变得复杂:<script>var x = "<!--"; </script> var y = "-->"; alert(x + y);</script>
。 注意:script
和style
可以是XML命名空间的名称,因此它们不被视为通常的script
或style
元素。例如:<script:a>Hello</script:a>
。 注意:结束标签名称后的空格是可能的:</script >
,但结束标签之前则不可以:< / script>
。- 跳过没有内部内容的其他标签或类似标签的元素。例如:
<a>.</a>
。 注意:预计此HTML是非法的:<a test=">"></a>
。 注意:还跳过像标签一样的内容:<>
、<!>
等。 注意:没有结束的标签将跳过到输入的末尾:<hello
- HTML和XML实体不被解码。必须由单独的函数处理。
- 文本中的空格被压缩或按照特定规则插入。
- 开头和结尾的空格被移除。
- 连续的空格被压缩。
- 但是如果文本由其他元素分隔且没有空格,则会插入空格。
- 这可能导致不自然的示例:
Hello<b>world</b>
,Hello<!-- -->world
- HTML中没有空格,但函数插入了它。还考虑:Hello<p>world</p>
,Hello<br>world
。这种行为在数据分析中是合理的,例如将HTML转换为单词集合。
- 还注意,正确处理空格需要支持
<pre></pre>
和CSS的display
及white-space
属性。
语法
参数
x
— 输入文本。 String。
返回值
- 提取的文本。 String。
示例
第一个示例包含几个标签和一个注释,并显示空格处理。 第二个示例显示CDATA和script标签处理。 第三个示例从通过url函数接收的完整HTML响应中提取文本。
结果:
ascii
返回字符串 s
第一个字符的ASCII码点(作为Int32)。
如果s
为空,则结果为0。如果第一个字符不是ASCII字符或不属于UTF-16的拉丁-1补充范围,则结果未定义。
语法
soundex
返回字符串的Soundex码。
语法
参数
val
— 输入值。 String
返回值
- 输入值的Soundex码。 String
示例
结果:
punycodeEncode
返回字符串的Punycode表示。 字符串必须为UTF8编码,否则行为未定义。
语法
参数
val
— 输入值。 String
返回值
- 输入值的Punycode表示。 String
示例
结果:
punycodeDecode
返回Punycode编码字符串的UTF8编码纯文本。 如果给定无效的Punycode编码字符串,则会抛出异常。
语法
参数
val
— Punycode编码字符串。 String
返回值
- 输入值的纯文本。 String
示例
结果:
tryPunycodeDecode
像 punycodeDecode
,但如果未提供有效的Punycode编码字符串,则返回空字符串。
idnaEncode
根据国际化域名在应用程序中的机制(IDNA)机制返回域名的ASCII表示(ToASCII算法)。 输入字符串必须为UTF编码且可转换为ASCII字符串,否则将抛出异常。 注意:未执行百分号解码或制表符、空格或控制字符的修剪。
语法
参数
val
— 输入值。 String
返回值
- 输入值的IDNA机制下的ASCII表示。 String
示例
结果:
tryIdnaEncode
像 idnaEncode
,但在发生错误时返回空字符串,而不是抛出异常。
idnaDecode
根据国际化域名在应用程序中的机制(IDNA)机制返回域名的Unicode(UTF-8)表示(ToUnicode算法)。
在发生错误时(例如,输入无效),返回输入字符串。
注意,重复应用idnaEncode()
和idnaDecode()
可能不会返回原始字符串,因为会出现大小写规范化问题。
语法
参数
val
— 输入值。 String
返回值
- 输入值的IDNA机制下的Unicode(UTF-8)表示。 String
示例
结果:
byteHammingDistance
计算两个字节字符串之间的汉明距离。
语法
示例
结果:
别名:mismatches
stringJaccardIndex
计算两个字节字符串之间的杰卡德相似性指数。
语法
示例
结果:
stringJaccardIndexUTF8
与stringJaccardIndex类似,但适用于UTF8编码的字符串。
editDistance
计算两个字节字符串之间的编辑距离。
语法
示例
结果:
别名:levenshteinDistance
editDistanceUTF8
计算两个UTF8字符串之间的编辑距离。
语法
示例
结果:
别名:levenshteinDistanceUTF8
damerauLevenshteinDistance
计算两个字节字符串之间的Damerau-Levenshtein距离。
语法
示例
结果:
jaroSimilarity
计算两个字节字符串之间的Jaro相似性。
语法
示例
结果:
jaroWinklerSimilarity
计算两个字节字符串之间的Jaro-Winkler相似性。
语法
示例
结果:
initcap
将每个单词的首字母转换为大写,其他字母转换为小写。单词是由非字母数字字符分隔的字母数字字符序列。
由于 initCap
仅将每个单词的首字母转换为大写,因此您可能会观察到包含撇号或大写字母的单词出现意外行为。例如:
将返回
这是已知行为,目前没有计划修复。
语法
参数
val
— 输入值。 String。
返回值
val
中每个单词首字母转换为大写。 String。
示例
查询:
结果:
initcapUTF8
与initcap类似,initcapUTF8
将每个单词的首字母转换为大写,其他字母转换为小写。假设字符串包含有效的UTF-8编码文本。
如果违反了这一假设,则不会抛出异常,结果是未定义的。
此函数无法检测语言,例如,对于土耳其语,结果可能不完全正确(i/İ与i/I)。 如果UTF-8字节序列的长度在大小写之间不同,则该代码点的结果可能不正确。
语法
参数
val
— 输入值。 String。
返回值
val
中每个单词首字母转换为大写。 String。
示例
查询:
结果:
firstLine
返回多行字符串中的第一行。
语法
参数
val
— 输入值。 String
返回值
- 输入值的第一行,如果没有行分隔符,则返回整个值。 String
示例
结果:
stringCompare
比较两个字符串的字典序。
语法
参数
string1
— 要比较的第一个字符串。 Stringstring2
- 要比较的第二个字符串。Stringstring1_offset
— 在string1
中开始比较的位置(零基础)所对应的正数。可选。string2_offset
— 在string2
中开始比较的位置(零基础)所对应的正数。可选。num_bytes
— 在两个字符串中要比较的最大字节数。如果string_offset
+num_bytes
超过输入字符串的结尾,则num_bytes
将相应减少。
返回值
- -1 — 如果
string1
[string1_offset
:string1_offset
+num_bytes
] <string2
[string2_offset
:string2_offset
+num_bytes
] 且string1_offset
< len(string1
) 且string2_offset
< len(string2
)。 如果string1_offset
>= len(string1
) 且string2_offset
< len(string2
)。 - 0 — 如果
string1
[string1_offset
:string1_offset
+num_bytes
] =string2
[string2_offset
:string2_offset
+num_bytes
] 且string1_offset
< len(string1
) 且string2_offset
< len(string2
)。 如果string1_offset
>= len(string1
) 且string2_offset
>= len(string2
)。 - 1 — 如果
string1
[string1_offset
:string1_offset
+num_bytes
] >string2
[string2_offset
:string2_offset
+num_bytes
] 且string1_offset
< len(string1
) 且string2_offset
< len(string2
)。 如果string1_offset
< len(string1
) 且string2_offset
>= len(string2
)。
示例
结果:
结果: