有没有像strpos()
in PHP 这样的原生Emacs Lisp 函数? ?它应该返回给定字符串在当前缓冲区中第一次出现的位置。函数 search-forward
很好,但它修改了字符位置。
最佳答案
PHP中strpos
对应的函数,在一个字符串中查找另一个字符串,是cl
包中的search
:
(require 'cl)
(search needle haystack :start2 offset)
如果要在缓冲区内搜索字符串,请使用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)))
...)))
关于emacs - Emacs Lisp 中的 strpos,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3896953/