Skip to content

字符串 ​

字符串类型与内置方法。 类型关键字是 字(字符串/整数/逻辑 等为可读别名);本页汇总字符串的常用成员。

属性与方法 ​

成员说明
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)。

相关 ​

基于 VitePress 静态构建 · 文档内容与仓库 GUIDE/ 同源

玄铁玄铁 XUANTIE · 中文系统级编程语言MARK 玄·折 120×120 · STROKE 8 · NO CURVES