31.2.7 跳过指定字符

以下两个函数用于将点移动越过指定字符集合。例如常用于跳过空白字符。相关函数参见 移动与语法

这些函数会像搜索函数一样,根据缓冲区是多字节还是单字节,将字符集字符串转为对应编码(see 搜索与匹配)。

Function: skip-chars-forward character-set &optional limit

该函数在当前缓冲区中将点向前移动,跳过给定字符集中的字符。它检查点后的字符,若匹配 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 ----------
Function: skip-chars-backward character-set &optional limit

该函数将点向后移动,跳过匹配 character-set 的字符,直至 limit。除移动方向外,其余与 skip-chars-forward 完全相同。

返回值表示移动距离,为小于等于零的整数。