$substrBytes
¶3.4版的新功能。
返回字符串的子字符串。子字符串以字符串中指定的UTF-8字节索引(从零开始)处的字符开始,并持续指定的字节数。
$substrBytes
具有以下运算符表达式语法:
领域 | 类型 | 描述 |
---|---|---|
string expression |
串 | 从中提取子字符串的字符串。
可以是任何有效的表达式,只要它可以解析为字符串即可。有关表达式的更多信息,请参见表达式。 如果参数解析为 如果参数不解析为字符串或 |
byte index |
数 | 指示子字符串的起点。只要可以解析为非负整数或可以表示为整数(例如2.0)的数字,就可以是任何有效表达式。
|
byte count |
数 | 只要可以解析为非负整数或可以表示为整数(例如2.0)的数字,就可以是任何有效表达式。
|
的$substrBytes
操作者使用的UTF-8编码的字节,其中每个码点,或字符,可以在一个和四个字节之间使用编码索引。
例如,US-ASCII字符使用一个字节编码。带变音符号的字符和其他拉丁字母字符(即英语字母之外的拉丁字符)使用两个字节进行编码。中文,日文和韩文字符通常需要三个字节,而其他Unicode平面(表情符号,数学符号等)则需要四个字节。
请务必牢记其中的内容,
因为在UTF-8字符的中间提供或
会导致错误。string expression
byte index
byte count
$substrBytes
区别$substrCP
在于
$substrBytes
计算每个字符的字节数,而
$substrCP
计数代码点或字符,而不管字符使用多少字节。
例 | 结果 |
---|---|
消息错误:
|
|
消息错误:
|
考虑包含inventory
以下文档的集合:
以下操作使用$substrBytes
运算符将quarter
值(仅包含单字节US-ASCII字符)分隔为a yearSubstring
和a quarterSubstring
。该
quarterSubstring
字段代表指定后的字符串的其余部分。通过使用减去字符串的长度来计算。byte index
yearSubstring
byte index
$strLenBytes
该操作返回以下结果: