Estoy tratando de dividir una cadena usando la función 'split-string' basada en. personaje. Pero (split-string "1.2.3" ".")
no funciona en absoluto. Simplemente devuelve una lista de la cantidad variable de cadenas vacías. Es . un personaje especial que necesita ser escapado o especificado de alguna manera diferente?Función Elisp de cuerda dividida para dividir una cadena por. carácter
Respuesta
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.
Si llama describe-function
en split-string
, normalmente pulsando F1fsplit-string
Introduzca, 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))))
- 1. cuerda dividida por el guión en Javascript
- 2. C# Dividir una cadena por otra cadena
- 3. Dividir por primera cuerda encontró en Java
- 4. problema cerdo con una cuerda dividida (STRSPLIT)
- 5. Dividir una cadena en una cadena, no un carácter
- 6. vb.net: ¿Se puede dividir una cadena por una cadena
- 7. ¿Cómo dividir una cadena por una cadena en Scala
- 8. Cadena dividida por dos delimitadores diferentes
- 9. Dividir una cuerda por un espacio sin quitar el espacio?
- 10. Separar una cadena por un carácter
- 11. C++ cadena dividida por doble línea nueva
- 12. Regex para dividir una cadena solo por el último carácter de espacio en blanco
- 13. dividida por múltiples personajes
- 14. Dividir una cadena/número cada enésimo carácter/número?
- 15. valores de moneda dividida cadena por comas
- 16. C#: ¿cómo obtener el primer carácter de una cuerda?
- 17. ¿Cómo puedo reemplazar una cuerda por rango?
- 18. dividida por CRLF usando VB.net
- 19. Expresión regular, cuerda dividida por la letra mayúscula, pero ignoran TLA
- 20. Android: ¿cómo reemplazar parte de una cadena por otra cuerda?
- 21. ¿Hay una función dividida en xpath?
- 22. ¿Cómo dividir una cadena separada por comas?
- 23. Lógica de cadena dividida en J2ME
- 24. cadena dividida después de caracteres x
- 25. macro elisp para escribir la función?
- 26. java - cadena dividida usando la expresión regular
- 27. Java: ¿Cómo dividir una cadena por una cantidad de caracteres?
- 28. Convertir cadena a matriz sin usar la función Dividir
- 29. Cómo dividir la cadena usando '^' este carácter especial en java?
- 30. Dividir en un carácter único