在Emacs Lisp中的strpos

Tör*_*bor 2 emacs elisp strpos

是否存在本机Emacs Lisp函数,其行为类似于strpos()PHP?它应该返回当前缓冲区中第一次出现给定字符串的位置.功能search-forward很好,但它修改了角色位置.

Gil*_*il' 5

strpos在PHP中对应的函数,用于在另一个字符串中搜索字符串,search来自cl包:

(require 'cl)
(search needle haystack :start2 offset)
Run Code Online (Sandbox Code Playgroud)

如果要在缓冲区内搜索字符串,请使用search-forward.由于这会更改当前缓冲区和缓冲区内的点,因此需要将函数包装在内部save-excursion; 这是一个常见的Emacs Lisp成语.您还应该将函数包装起来save-match-data,以免干扰对代码调用的搜索.

(save-match-data
  (save-excursion
    (set-buffer haystack)
    (goto-char (or offset (point-min)))
    (let ((pos (search-forward needle nil t)))
      ...)))
Run Code Online (Sandbox Code Playgroud)