2012-09-05 13 views

Respuesta

17

Una forma es utilizar substring (o substring-no-properties):

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

(substringCADENADE&optionalA)

Volver una nueva cadena cuyo contenido es una subcadena de CADENA. La cadena devuelta consiste en los caracteres entre el índice DE (ambos inclusive) y el índice de A (exclusivo) de STRING. FROM y TO son zero-indexed: 0 significa el primer carácter de STRING. Los valores negativos se cuentan desde el final de CADENA. Si TO es nil, la subcadena ejecuta hasta el final de STRING.

+0

Muchas gracias. – Peter

2

Probablemente la opción más flexible (aunque no está claro si necesita flexibilidad) sería utilizar replace-regexp-in-string:

Ver Chfreplace-regexp-in-stringRET

por ejemplo:

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

En su caso particular, es posible que desee utilizar file-name-sans-extension.

6

Stefan's answer es idiomático, cuando solo necesita un nombre de archivo sin extensión. Sin embargo, si manipulas archivos y rutas de archivos en gran medida en tu código, te recomiendo instalar la API de archivos y directorios de f.el de Johan Andersson, ya que proporciona muchas funciones ausentes en Emacs con una API consistente. Confirmar funciones f-base y f-no-ext:

(f-base "~/doc/index.org") ; => "index" 
(f-no-ext "~/doc/index.org") ; => "~/doc/index" 

Si, en cambio, se trabaja con cadenas menudo, instale Magnar Sveen de s.el por las mismas razones. Usted puede estar interesado en s-chop-suffix:

(s-chop-suffix ".org" "~/doc/index.org") ; => "~/doc/index" 

Para subcadena genérico de recuperación de uso dkim's answer.

+0

Esta es una buena solución de alto nivel. Gracias. – Jabba

Cuestiones relacionadas