以下两个函数用于将点移动越过指定字符集合。例如常用于跳过空白字符。相关函数参见 移动与语法。
这些函数会像搜索函数一样,根据缓冲区是多字节还是单字节,将字符集字符串转为对应编码(see 搜索与匹配)。
该函数在当前缓冲区中将点向前移动,跳过给定字符集中的字符。它检查点后的字符,若匹配 character-set 则前移点,直至遇到不匹配字符为止。函数返回跳过的字符数。
参数 character-set 是一个字符串,用法类似正则表达式中 ‘[…]’ 内部的形式,区别是 ‘]’ 不会终止集合,且 ‘\’ 可转义 ‘^’、‘-’ 或 ‘\’。
因此 "a-zA-Z" 会跳过所有字母,在首个非字母处停止;而 "^a-zA-Z" 跳过非字母,在首个字母处停止(see 正则表达式)。也可使用字符类,例如 "[:alnum:]"(see 字符类)。
若提供 limit(必须为数字或标记),它指定点可移动到的缓冲区最大位置。点会停在 limit 处或其之前。
下例中,点初始位于 ‘T’ 之前。执行表达式后,点移至该行末尾(‘hat’ 的 ‘t’ 与换行符之间)。函数跳过所有字母和空格,但不跳过换行符。
---------- Buffer: foo ---------- I read "∗The cat in the hat comes back" twice. ---------- Buffer: foo ----------
(skip-chars-forward "a-zA-Z ")
⇒ 18
---------- Buffer: foo ----------
I read "The cat in the hat∗
comes back" twice.
---------- Buffer: foo ----------
该函数将点向后移动,跳过匹配 character-set 的字符,直至 limit。除移动方向外,其余与 skip-chars-forward 完全相同。
返回值表示移动距离,为小于等于零的整数。