2012-05-03 5 views
1

Я хочу написать код в DrRacket, который принимает несколько слов из командной строки и преобразует их в список строк. Напр. если я вхожу привет, как вы делаете в командной строке, он должен преобразовать его в список '(«привет» «как» «делать» «вы» «делаете»). Возможно ли это в DrRacket?Принятие слов из командной строки и преобразование в список строк

я попытался это: (определить ИНП-LST (читай))

На выполнении этого кода, вход отображается строка в командной ПРОМТ. но когда я вхожу в указанную выше строку, значение inp-lst оказывается равным 'hello. Может кто-нибудь помочь?

ответ

2

В качестве первого шага, введите ваш вклад в кавычки, например:

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

Теперь вы можете создать список строк, делая это:

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

EDIT:

Как было указано в комментариях, read-line может быть лучшей альтернативой:

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

Используя read-line, вам не нужно окружать напечатанный текст кавычками.

+1

Это работает. Спасибо –

+0

'(read)', похоже, не работает для меня ... Мне нужно было сделать '(require readline/readline)' then do '(readline" Input: ")', чтобы получить приглашение .. EDIT: nvm , но readline, вероятно, больше того, что ищет Раджеш. – oobivat

+0

@oobivat спасибо за предложение, я обновил свой ответ. –

0

Функция «чтение» читает одно выражение, которое в вашем случае это единственный символ «привет». Ваше намерение состоит в том, чтобы прочитать одну строку, завершенную # \ newline, получить одну строку, а затем разбить ее на # \ space. Попробуйте 'read-line'

+0

Да. Когда я запускаю (определяю inp-lst (read-line)) и вводим строку в приглашении, скажем ** hello world **, значение inp-lst теперь ** «hello world» ** –

+0

Отлично! Теперь вы можете разбить его на «токены», разделенные пробелом # \. – GoZoner

Смежные вопросы