Aceptar palabras del símbolo del sistema y convertirlas en una lista de cadenas

Quiero escribir un código en DrRacket que acepte varias palabras del símbolo del sistema y las convierta en una lista de cadenas. Por ej. si entro Hola cómo estás en el indicador, debería convertirlo en una lista '("Hola cómo estás"). ¿Es posible en DrRacket?

Intenté esto: (definir inp-lst (leer))

Al ejecutar este código, se muestra una barra de entrada en el símbolo del sistema. pero cuando ingreso la línea anterior, el valor de inp-lst resulta ser solo 'Hola. ¿Alguien puede ayudar?

preguntado el 03 de mayo de 12 a las 17:05

2 Respuestas

Como primer paso, escriba su entrada entre comillas, así:

(define inp-lst (read))
"hello how do you do"

Ahora, puede crear una lista de cadenas haciendo esto:

(regexp-split #px" " inp-lst)
> '("hello" "how" "do" "you" "do")

EDIT:

Como se ha señalado en los comentarios, read-line podría ser una mejor alternativa:

(define inp-lst (read-line))
(regexp-split #px" " inp-lst)
> '("hello" "how" "do" "you" "do")

Usar read-line, no necesita rodear el texto escrito con comillas.

contestado el 03 de mayo de 12 a las 20:05

(read) no parece funcionar para mí ... tenía que hacer (require readline/readline) entonces hazlo (readline "Input: ") para obtener un aviso ... EDITAR: nvm, pero readline es probablemente más lo que Rajesh está buscando. - robbiephillips

La función 'leer' lee una expresión que, en su caso, es el único símbolo 'hola'. Su intención es leer una línea, terminada en #\nuevalínea, obtener una sola cadena y luego dividirla por #\espacio. Prueba 'read-line'

contestado el 03 de mayo de 12 a las 18:05

Si. Cuando ejecuto (define inp-lst (read-line)), e ingreso una línea en el aviso, diga hola mundo , el valor de inp-lst ahora es "Hola Mundo" - Rajesh Bhat

¡Perfecto! Ahora puede dividirlo en 'tokens' separados por #\space. - GoZoner

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.