Tengo dos problemas mientras trabajo en Lisp y no encuentro ningún tutorial o sitio que lo explique. ¿Cómo se divide una cadena en sus caracteres individuales? ¿Y cómo podría cambiar esos caracteres en sus valores ASCII correspondientes? Si alguien conoce algún sitio o video tutorial que los explique, sería muy apreciado.División de cadena en caracteres individuales
Respuesta
CL-USER 87 > (coerce "abc" 'list)
(#\a #\b #\c)
CL-USER 88 > (map 'list #'char-code "abc")
(97 98 99)
Consiga el Common Lisp Quick Reference.
split-string
divide la cadena en subcadenas en función de los separadores de expresiones regulares Cada coincidencia para separadores define un punto de división; las subcadenas entre los puntos de división se convierten en una lista, que se devuelve. Si omitir-nulos es nulo (u omitido), el resultado contiene cadenas nulas siempre que haya dos coincidencias consecutivas para los separadores, o una coincidencia es adyacente al comienzo o al final de la cadena. Si omit-nulls es t, estas cadenas nulas se omiten del resultado. Si los separadores son nulos (u omitidos), el valor predeterminado es split-string-default-separators.
Como un caso especial, cuando los separadores son nil
(u omitidos), las cadenas nulas siempre se omiten del resultado. Por lo tanto:
(split-string " two words ") -> ("two" "words")
The result is not ("" "two" "words" ""), which would rarely be useful. If you need
such a result, use an explicit value for separators:
(split-string " two words " split-string-default-separators) -> ("" "two" "words" "")
More examples:
(split-string "Soup is good food" "o") -> ("S" "up is g" "" "d f" "" "d")
(split-string "Soup is good food" "o" t) -> ("S" "up is g" "d f" "d")
(split-string "Soup is good food" "o+") -> ("S" "up is g" "d f" "d")
Entonces, usando una cadena dividida, ¿es posible separar una cadena en los caracteres o sería eso para un separador de caracteres? –
También puede usar elt o aref para obtener caracteres específicos de una cadena.
Uno de los mejores sitios para una introducción en profundidad a Common Lisp es el sitio para el Practical Common Lisp book(). El libro completo está disponible en línea de forma gratuita. Echale un vistazo.
¿Qué pasa si no sé cuántos caracteres hay en la cadena? ¿Elt y aref todavía estarían bien para usar entonces? –
@ user710086: puede usar 'length' para obtener la longitud de una cadena. Además de 'elt', que funciona para cualquier secuencia, y' aref', que funciona para cualquier matriz, también puede usar la función 'char' que se debe usar solo con cadenas. –
Una cadena Lisp ya está dividida en sus caracteres, de alguna manera. Es un vector de caracteres y, dependiendo de lo que necesite hacer, puede usar operaciones de cadenas enteras o cualquier operación aplicable a vectores (como todas las operaciones del protocolo de secuencia) para manejar los caracteres individuales.
- 1. División de cadenas en palabras individuales Java
- 2. División de cadena por caracteres no alfabéticos
- 3. dividir una cadena en caracteres individuales en SQL Server 2005
- 4. cadena división en par de caracteres en Ruby
- 5. Caracteres individuales de salida en C
- 6. cómo iterar caracteres individuales en Lua string?
- 7. División de cadena en matriz
- 8. División de cadena en palabras
- 9. número de división de cadena
- 10. división cadena especial en Ruby
- 11. Separar una cadena en la matriz de cadenas de caracteres individuales
- 12. Tesseract no reconoce los caracteres individuales
- 13. ¿Cómo determino eficientemente el palindrome de caracteres individuales más largo en una cadena dada?
- 14. división de cadena de pitón
- 15. División de cadena en 512 bloques de char
- 16. División de cadena con LINQ
- 17. División de una cadena en solo 2 partes
- 18. cadena de la división en grupos
- 19. División de una cadena en Java
- 20. División de una cadena en un iterador
- 21. División de Javascript dividir la cadena en 2 partes, independientemente del número de caracteres de saliva presentes en la cadena
- 22. División de cadena en partes iguales usando PHP
- 23. división y concatenar una cadena
- 24. División de cadena basada en una expresión regular
- 25. cadena de división de rubíes mediante la repetición de caracteres o un espacio
- 26. Separar cadena en una matriz de cadenas de caracteres
- 27. División de una cadena en el primer espacio
- 28. División de cadena por longitud fija
- 29. División de matrices en C++
- 30. División de cadena por el último separador
enlace a "Referencia rápida de Common Lisp" tristemente está muerto. –
@ Reb.Cabin: arreglado. –