Kiedy mam ciąg znaków jak "Test.m", jak mogę uzyskać tylko podłańcuch "Test" z tego przez elisp? Próbuję użyć tego w moim pliku .emacs
.Jak mogę uzyskać podciąg łańcucha w Emacs Lisp?
Odpowiedz
Jednym ze sposobów jest użycie substring
(lub substring-no-properties
):
(substring "Test.m" 0 -2) => "Test"
(
substring
STRINGOD&optional
DO)Zwraca nowy ciąg, którego zawartość stanowią podciąg z STRING. zwrócony ciąg składa się ze znaków między indeksem Z (włącznie) oraz indeks DO (wyłącznie) z STRING. OD i DO są zindeksowane zero: 0 oznacza pierwszy znak STRING. Wartości ujemne są liczone od końca STRING. Jeśli TO jest
nil
, podciągnij działa na koniec STRING.
Prawdopodobnie opcja najbardziej elastyczne (choć nie jest jasne, czy trzeba elastyczność) byłoby użyć replace-regexp-in-string
:
Zobacz Chfreplace-regexp-in-string
RET
np
(replace-regexp-in-string "\\..*" "" "Test.m")
W konkretnym przypadku możesz użyć file-name-sans-extension
.
Stefan's answer jest idiomatyczna, gdy potrzebujesz tylko nazwy pliku bez rozszerzenia. Jednakże, jeśli manipulujesz plikami i ścieżkami plików w kodzie, polecam zainstalować plik i katalog API Johan Anderssona f.el
, ponieważ zapewnia wiele funkcji nieobecnych w Emacsie ze spójnym interfejsem API. Sprawdź funkcje f-base
i f-no-ext
:
(f-base "~/doc/index.org") ; => "index"
(f-no-ext "~/doc/index.org") ; => "~/doc/index"
Jeśli natomiast pracujesz z ciągów często zainstalować Magnar Sveen na s.el
z tych samych powodów. Możesz być zainteresowany s-chop-suffix
:
(s-chop-suffix ".org" "~/doc/index.org") ; => "~/doc/index"
przypadku generycznych podciągu użytku pobierania dkim's answer.
To jest ładne rozwiązanie wysokiego poziomu. Dzięki. – Jabba
- 1. Jak "dekodować URL" ciąg w Emacs Lisp?
- 2. Jak uzyskać dostęp do zawartości bieżącego regionu w Emacs Lisp?
- 3. Jak zrobić zamknięcia w Emacs Lisp?
- 4. Jak usunąć konkretny podciąg z łańcucha?
- 5. zawijanie funkcji w emacs lisp
- 6. Jak podsumować listę numerów w Emacs Lisp?
- 7. Jak dodawać daty w Emacs przy użyciu Emacs Lisp?
- 8. Uzyskaj podciąg z łańcucha w Liquid?
- 9. Emacs Lisp: Jak, interaktywny bufor z REPL?
- 10. Wstaw cały miesiąc dat w Emacs Lisp
- 11. emacs - autouzupełnianie w trybie Empsa Lisp
- 12. Jak wywołać interaktywną funkcję Emacs Lisp z argumentem prefiksu, z innej funkcji Emacs Lisp?
- 13. Emacs Lisp: ocena zmiennej w alist
- 14. Jak mogę uzyskać wysokość daszka danego łańcucha?
- 15. niech i flet w Emacs Lisp
- 16. Kolumna pozycji bufora w Emacs Lisp?
- 17. Jak wyciąć podciąg z łańcucha na koniec za pomocą JavaScript?
- 18. Jak zlokalizować błąd w pliku LISP w Emacs?
- 19. Co oznacza (interaktywne) w funkcji Emacs Lisp?
- 20. W Emacs Lisp, jak znaleźć, gdzie symbol jest zdefiniowany
- 21. Jak odnosić się do pliku aktualnie ładowanego do Emacs Lisp?
- 22. Jak mogę wyodrębnić podciągi z łańcucha w Perlu?
- 23. Jak przekonwertować listę na ciąg w Emacs Lisp
- 24. Jak programowo ustawić niestandardową zmienną w Emacs Lisp?
- 25. Jak sprawdzić, czy ciąg znaków jest pusty w Emacs Lisp?
- 26. Wyodrębnij podciąg z łańcucha w Ruby, używając wyrażenia regularnego.
- 27. błąd Emacs Lisp "Niewłaściwy typ argumentu: commandp"
- 28. Co oznacza kod źródłowy^L w (Emacs Lisp)?
- 29. Jak wziąć podciąg łańcucha danego łańcucha do pierwszego pojawienia się określonego znaku?
- 30. W Emacs LISP w jaki sposób mogę dodać ciąg do pliku, którego nie lubię otwierać?
Dziękuję bardzo. – Peter