En Erlang, cuando tiene una lista de caracteres imprimibles, es una cadena, pero una cadena también es una lista de elementos y todas las funciones de una lista se pueden aplicar a una cadena. Idealmente, la estructura de datos: string no existe en erlang.
Parte de mi código necesita estar seguro de que algo no es solo una lista, sino una cadena. (Una cadena real). Necesita separar listas, por ej. [1,2,3,a,b,"josh"]
, de una cadena, p. "Muzaaya"
. La expresión de protección is_list/1
dirá true
para ambas cadenas y listas. No existe una protección como
y, por lo tanto, esto significa que necesito un fragmento de código para asegurarme de que mis datos sean una cadena. Una cadena en este caso es una lista de solo imprimible (alfabético, ambos casos, superior e inferior), y puede contener números, por ejemplo, is_string/1
"Muzaaya2536 618 Joshua"
. Necesito un fragmento de código (Erlang) que verifique por mí y se asegure de que la variable sea una cadena, no solo una lista. graciasdiferenciar una cadena de una lista en Erlang
Respuesta
usted tiene dos funciones en el módulo io_lib
que pueden ser útiles: io_lib:printable_list/1
io_lib:printable_unicode_list/1
y que ponen a prueba si el argumento es una lista de imprimibles latin1 o Unicode caracteres respectivamente.
gracias @rvirding, ¡esta es una solución más estándar! –
utilizando el isprint (3) definición de los caracteres imprimibles -
isprint(X) when X >= 32, X < 127 -> true;
isprint(_) -> false.
is_string(List) when is_list(List) -> lists:all(fun isprint/1, List);
is_string(_) -> false.
usted no será capaz de utilizarlo como un guardia, sin embargo.
Gracias @ butter71, esto funciona muy bien también ! –
Esto funciona para el conjunto de caracteres Latin1, pero podría ser importante tener en cuenta que rechazará los códigos de caracteres Unicode. – goncalotomas
- 1. Erlang: aplanamiento de una lista de cadenas
- 2. Determinar si un elemento es una cadena o una lista en Erlang
- 3. Aplanar una lista de listas anidadas en Erlang
- 4. ¿Cómo crear una lista de 1000 números aleatorios en Erlang?
- 5. Convertir una lista en una cadena
- 6. ¿Cómo dividir una cadena en una lista?
- 7. ¿Cómo buscar un elemento en una lista en Erlang?
- 8. HMAC SHA256 hex digest de una cadena en Erlang, ¿cómo?
- 9. Cómo cambiar un elemento en una lista en erlang
- 10. Lista de PID en Erlang
- 11. En Erlang, ¿cómo convierto una Cadena en un valor binario?
- 12. ¿Cómo puedo codificar XML una cadena en Erlang?
- 13. convertir un entero a una cadena en Erlang
- 14. ¿Cómo formatear una cadena plana con números enteros en erlang?
- 15. Erlang: Lista de Tuple en JSON
- 16. Reemplazar claves en una tupla en Erlang
- 17. Agregar una cadena a una lista
- 18. Agregar una cadena delante de una cadena para cada elemento en una lista en python
- 19. Convierta una lista de caracteres (o matriz) en una cadena
- 20. Ruby: Es una cadena en una lista de valores
- 21. Colecciones Java convertir una cadena en una lista de caracteres
- 22. Convirtiendo una cadena en una lista de palabras?
- 23. Asignación de corte con una cadena en una lista
- 24. Erlang en una JVM/CLR
- 25. Convertir una cadena en una lista en Python
- 26. Convierta una lista en una cadena en C#
- 27. ¿Cómo convierto una cadena en una lista en Io?
- 28. ¿Cómo puedo convertir una cadena en una lista en Python?
- 29. Lista binaria a lista de cadenas - Erlang
- 30. convertir una lista de booleanos a cadena
Vea también http://stackoverflow.com/questions/2479713/determining-if-an-item-is-a-string-or-a-list-in-erlang – legoscia