Разделить строку на отдельные символы - PullRequest
5 голосов
/ 18 апреля 2011

У меня две проблемы при работе в Лиспе, и я не могу найти учебники или сайты, объясняющие это. Как вы разделяете строку на отдельные символы? И как я смогу изменить эти символы на соответствующие им значения ASCII? Если кто-нибудь знает какие-либо сайты или обучающие видео, объясняющие их, они будут очень благодарны.

Ответы [ 4 ]

9 голосов
/ 18 апреля 2011
CL-USER 87 > (coerce "abc" 'list)
(#\a #\b #\c)


CL-USER 88 > (map 'list #'char-code "abc")
(97 98 99)

Получить Общий справочник по Lisp .

1 голос
/ 19 апреля 2011

Строка Lisp уже каким-то образом разбита на свои символы. Это вектор символов, и в зависимости от того, что вам нужно сделать, вы можете использовать целые строковые операции над ним или любые операции, применимые к векторам (например, все операции протокола последовательности), для обработки отдельных символов.

0 голосов
/ 18 апреля 2011

Вы также можете использовать elt или aref для извлечения определенных символов из строки.

Одним из лучших сайтов для углубленного знакомства с Common Lisp является сайт для Практической книги Common Lisp ( ссылка на раздел о числах, символах и строках ) , Вся книга доступна онлайн бесплатно. Проверьте это.

0 голосов
/ 18 апреля 2011

split-string разбивает строку на подстроки на основе разделителей регулярных выражений. Каждое совпадение для разделителей определяет точку разделения;подстроки между точками разбиения превращаются в список, который возвращается.Если omit-nulls равен nil (или опущен), результат содержит пустые строки, когда есть два последовательных совпадения для разделителей, или совпадение находится рядом с началом или концом строки.Если omit-nulls равен t, эти нулевые строки в результате опускаются.Если разделители равны нулю (или опущены), значением по умолчанию является значение split-string-default-separators.

В особом случае, когда разделители равны nil (или опущены), нулевые строки всегда опускаютсяиз результата.Таким образом:

(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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...