字符串
字符串类型与内置方法。 类型关键字是 字(字符串/整数/逻辑 等为可读别名);本页汇总字符串的常用成员。
属性与方法
| 成员 | 说明 |
|---|---|
s.长度 / s.字节数 | 字节长度(中文一个字 3 字节)——两者同值 |
s.字符数 | 字符个数(与字节数区分:"玄铁XuanTie".长度=13,.字符数=9) |
s.截取(起, 止) | 子串,下标从 0 起、左闭右开;下标按字符计("玄铁XuanTie".截取(2,6)="Xuan") |
s.包含?(子串) / s.含?(子串) | 是否包含子串,返回布尔(两种写法等价) |
s.替换(旧, 新) | 替换全部出现 |
s.分割(分隔符) | 分割为数组;语义同 Python split(保留空段;分隔符为 "" 时按字符拆分) |
s.去首尾空格() | 剥掉两端的空白(ASCII 空白:空格、\t、\n、\r,判定集另含 \v/\f);中间的空白不动 |
s.去首空格() | 只剥左侧空白 |
s.去尾空格() | 只剥右侧空白 |
s.寻找(子串, 起始?) | 子串首次出现的字符位置(从 0 起),找不到返 -1;可传起始字符位置 |
s.倒找(子串) | 子串最后一次出现的字符位置,找不到返 -1 |
s.到大写() / s.到小写() | ASCII 大小写转换(中文等宽字符原样保留) |
s.重复(n) | 自身重复 n 次拼接(n<=0 返空串;"ab".重复(3)="ababab") |
| JSON 互转 | 用全局的 化 / 解 |
字符索引 vs 字节索引
玄铁字符串(UTF-8)有两套互不混淆的下标体系:
- 字符索引(逻辑字符,一个汉字算 1):
截取/寻找/倒找/字符数。要"第几个字符"时用。 - 字节索引(原始字节,一个汉字算 3):
字节(i)/字节数/ 字节 集 API(到字节集/字节到字符串)。要"原始字节"时用。
内嵌 NUL(0x00)的串:存储按长度前缀,字符索引层(字符数/截取/寻找/倒找)按长度工作、不受 NUL 影响;但 & 拼接、== 比较、示、化 等走 C 字符串语义的通道遇 NUL 会截断——二进制数据(wav/图片/网络包)请一律走字节集通路,那里全部按长度工作(截取/寻找/倒找/替换/取字节/写字节/到十六进制/分割/长度,见 字节)。
xuantie
设 b = 到字节集("ab")
b.追加(0) // 嵌入 NUL
b.追加(99)
设 s = 字节到字符串(b)
示(s.字符数) // 3——字符层不受 NUL 影响
示(b.寻找(到字节集("c"))) // 3——字节集通路,二进制推荐用法xuantie
设 s = "玄铁XuanTie"
示(字(s.长度)) // 字节数(13)
示(s.截取(0, 2)) // "玄铁"(按字符下标)
示(字(s.字符数)) // 字符数(9)
示(s.包含?("Xuan")) // 真
示(字(s.字节数)) // 字节数(13)
示("a,b,,c".分割(",")) // 4 段(保留空段)
示("你好".分割("")) // ["你", "好"]
示(" 玄铁 ".去首尾空格()) // "玄铁"
示(" 玄铁 ".去首空格()) // "玄铁 "
示(" 玄铁 ".去尾空格()) // " 玄铁"注意
- 本词是保留字:不能用作变量名、函数名、参数名等标识符(完整规则与清单见 词法与基础语法)。
- 剥空白三件套(
去首尾空格/去首空格/去尾空格)只认 ASCII 空白:全角空格()不会被剥掉;要连全角一起去,先替换(" ", " ")再剥。中间空白一律保留(不是"去掉所有空格")。 截取的下标是字符下标;但长度/字节数返回的是字节数,要字符数请用字符数。- 没有
拼接方法——拼接用&运算符。 - 字符串不可变:
替换返回新字符串,原值不变。 - 拼接用
&;+是数值运算——把字符串与数字混用时用&与字(x)。
相关
- 字、字节、数组
- 标准库与 Runtime API —— 字符串方法总览
- 06 数组编程指南 —— 数组(字符串的常见搭档)