2011-06-04 11 views

Respuesta

23

Aquí está la documentación oficial para la función de cuerda dividida - http://www.gnu.org/software/emacs/manual/html_mono/elisp.html#Creating-Strings.

El segundo argumento para la función de cadena dividida en (split-string "1.2.3" "\.") es una expresión regular y, como resultado, tanto el '.' carácter y '\' carácter tienen un significado especial. Entonces el '.' el carácter necesita ser escapado e incluso el carácter '\' necesita ser escapado con otro '\'. (split-string "1.2.3" "\\.") funcionará bien como se esperaba.

7

Si llama describe-function en split-string, normalmente pulsando F1fsplit-stringIntroduzca, se puede ver en la documentación, que el segundo parámetro no es sólo un personaje, sino una expresión regular:

Si SEPARATORS no es nulo, debe ser un texto de coincidencia de expresión regular que separe, pero no forme parte de, las subcadenas. Si no tiene el valor predeterminado, `split-string-default-separators ', normalmente" [\ f \ t \ n \ r \ v] + ", y OMIT-NULLS está forzado a t.

Mientras que para la mayoría de Emacs simples operaciones de cadenas son suficientes funciones incorporadas, cuando se utiliza la manipulación de cadenas en gran medida en el código Elisp, s.el biblioteca de terceros es indispensable. Puede instalarlo a través del gestor de paquetes Emacs, ejecutando el comando package-install con s como nombre de paquete. Supongamos que tiene múltiples funciones en varios módulos haciendo algo con cadenas, uniendo, dividiendo, capitalizando, comparando, recortando espacios en blanco, etc. Se tiene sentido tener todas las funciones relacionadas con la cadena debajo de un espacio de nombres comunes, por lo alternativo s.el 's de la incorporada en el split-string sería s-split:

(s-split "\\." "1.2.3") ; ("1" "2" "3") 

Por ejemplo, si usted necesita para transformar cadena " 1-2-3 " en "3.2.1", se podría escribir:

(s-reverse (s-join "." (s-split "-" (s-trim z)))) 
Cuestiones relacionadas