2012-09-05 11 views

Odpowiedz

17

Jednym ze sposobów jest użycie substring (lub substring-no-properties):

(substring "Test.m" 0 -2) => "Test" 

(substringSTRINGOD&optionalDO)

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.

+0

Dziękuję bardzo. – Peter

2

Prawdopodobnie opcja najbardziej elastyczne (choć nie jest jasne, czy trzeba elastyczność) byłoby użyć replace-regexp-in-string:

Zobacz Chfreplace-regexp-in-stringRET

np

(replace-regexp-in-string "\\..*" "" "Test.m") 
7

W konkretnym przypadku możesz użyć file-name-sans-extension.

6

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.

+0

To jest ładne rozwiązanie wysokiego poziomu. Dzięki. – Jabba

Powiązane problemy