จะตรวจสอบ elisp ได้อย่างไรว่าสตริงนั้นเป็นสตริงย่อยของสตริงอื่น?


25

จะตรวจสอบได้อย่างไรว่าสตริงs1นั้นเป็นสตริงย่อยของสตริงอื่นs2หรือไม่?

ตัวอย่างเช่น,(test-substring "f t" "df tj") --> t (test-substring "ft" "df tj") --> nil

คำตอบ:


36

วิธีมาตรฐาน Emacs Lisp เป็นการจับคู่นิพจน์ปกติ:

(string-match-p (regexp-quote needle) haystack)

14

cl-search สามารถทำได้ (และส่งกลับดัชนีของสตริงย่อยหากพบ):

ELISP> (cl-search "f t" "df tj")
1 (#o1, #x1, ?\C-a)
ELISP> (cl-search "ft" "df tj")
nil

1
ขอบคุณสิ่งนี้ตอบคำถามได้อย่างถูกต้อง ให้ฉันรอวิธีแก้ปัญหาอื่น ๆ
ชื่อ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.