【问题标题】:Accepting words from the command prompt and converting to list of strings从命令提示符接受单词并转换为字符串列表
【发布时间】:2012-05-03 16:55:08
【问题描述】:

我想在 DrRacket 中编写一个代码,它接受来自命令提示符的多个单词并将它们转换为字符串列表。例如。如果我在提示中输入 hello how do you do,它应该将其转换为列表 '("hello" "how" "do" "you" "do")。在 DrRacket 中可以吗?

我试过这个: (定义 inp-lst (读取))

运行此代码时,命令提示符中会显示一个输入栏。但是当我输入上述行时,inp-lst 的值原来只是 'hello。有人可以帮忙吗?

【问题讨论】:

    标签: scheme racket


    【解决方案1】:

    第一步,在引号之间输入您的输入,如下所示:

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

    现在,您可以这样做创建一个字符串列表:

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

    编辑:

    正如 cmets 中所指出的,read-line 可能是更好的选择:

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

    使用read-line,您无需将键入的文本用引号括起来。

    【讨论】:

    • (read) 似乎对我不起作用...我必须做(require readline/readline) 然后做(readline "Input: ") 以获得提示.. 编辑:nvm,但 readline 可能更多拉杰什正在寻找。
    【解决方案2】:

    “read”函数读取一个表达式,在您的情况下它是单个符号“hello”。您的意图是读取一行,以#\newline 终止,获取一个字符串,然后用#\space 将其拆分。试试“读线”

    【讨论】:

    • 是的。当我运行 (define inp-lst (read-line)) 并在提示符中输入一行,说 hello world 时,inp-lst 的值现在是 "hello world"
    • 完美!现在您可以将其拆分为以#\space 分隔的“令牌”。
    猜你喜欢
    • 2011-09-05
    • 1970-01-01
    • 2020-04-02
    • 2012-01-18
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    相关资源
    最近更新 更多