Jak sprawdzić w elisp, jeśli ciąg znaków jest podciągiem innego ciągu?

25

Jak sprawdzić, czy ciąg znaków s1jest podciągiem innego ciągu s2?

Na przykład (test-substring "f t" "df tj") --> t, (test-substring "ft" "df tj") --> nil.

Imię
źródło

Odpowiedzi:

36

Standardowym podejściem Emacsa Lispa jest dopasowanie wyrażeń regularnych:

(string-match-p (regexp-quote needle) haystack)
księżycowy
źródło
14

cl-search można to zrobić (a także zwraca indeks podłańcucha, jeśli zostanie znaleziony):

ELISP> (cl-search "f t" "df tj")
1 (#o1, #x1, ?\C-a)
ELISP> (cl-search "ft" "df tj")
nil
legoscia
źródło
1
Dzięki, to poprawnie odpowiada na pytanie. Poczekam na kilka innych rozwiązań.
Imię,