Преобразование строки в список
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Преобразование строки в список

Преобразование строки в список

Ответ
Поиск в этой теме
Непрочитано 19.02.2011, 23:27 #1
Преобразование строки в список
Nitrogenium
 
инженер
 
Санкт-Петербург
Регистрация: 02.03.2010
Сообщений: 69

Требуется преобразовать строку такого вида
"0 1 3 4 6 16 54" в список (0 1 3 4 6 16 51)
В строке только целые неотрицательные числа, отделенные пробелами.
Просмотров: 4779
 
Непрочитано 19.02.2011, 23:44
#2
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Код:
[Выделить все]
 (defun cdl-string->list (s p / i)
;;; (cdl-string->list (getenv "ACAD") ";")
  (cond
	((setq i (vl-string-search p s))
		(cons (substr s 1 i) (cdl-string->list (substr s (+ (strlen p) i 1)) p))
	)
	(T (list s))
  )
)
gomer вне форума  
 
Автор темы   Непрочитано 19.02.2011, 23:54
#3
Nitrogenium

инженер
 
Регистрация: 02.03.2010
Санкт-Петербург
Сообщений: 69
<phrase 1=


Спасибо! сейчас разбираться буду!
...правда с рекурсией это будет непросто))
А что такое функция T?

Последний раз редактировалось Nitrogenium, 20.02.2011 в 00:05.
Nitrogenium вне форума  
 
Непрочитано 20.02.2011, 00:08
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


http://forum.dwg.ru/showthread.php?t=15661
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 20.02.2011, 00:08
#5
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Т - это не функция...
собственнно, в вашем случае
Код:
[Выделить все]
 (mapcar 'atoi (cdl-string->list "0 1 3 4 6 16 54" " "))
вот и все решение...
gomer вне форума  
 
Непрочитано 20.02.2011, 01:14
1 | 1 #6
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


Код:
[Выделить все]
 (read (strcat "(" "0 1 3 4 6 16 54" ")"))
Vov.Ka вне форума  
 
Непрочитано 20.02.2011, 01:31
#7
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от Nitrogenium Посмотреть сообщение
Требуется преобразовать строку такого вида
"0 1 3 4 6 16 54" в список (0 1 3 4 6 16 51)
В строке только целые неотрицательные числа, отделенные пробелами.
Мой скромный пятак в общую копилку:

Код:
[Выделить все]
;;*** string-to-list ***
(defun Split  (txt sep);provided by fixo
  (if (not (eq (chr 34) txt))
    (if	(setq pos (vl-string-search sep txt 0))
      (cons (substr txt 1 pos)
	    (split (substr txt (+ pos 1 (strlen sep))) sep))
      (list txt)))
  )

;;examples of usage:
;(split "1 2 3 4 5 25 65" (chr 32))
;(split "1\t2\t3\t4\t5\t25\t65" (chr 9))
;(split "1XXL2XXL3XXL4XXL5XXL25XXL65" "XXL")
;etc..
Олег (jr.) вне форума  
 
Непрочитано 20.02.2011, 02:28
#8
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Олег (jr.) Посмотреть сообщение
Мой скромный пятак в общую копилку:
очень похоже на #2
gomer вне форума  
 
Непрочитано 20.02.2011, 09:02
#9
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811


Цитата:
Сообщение от gomer Посмотреть сообщение
очень похоже на #2
Много чего такого на свете похоже а работает по разному
И я может по слабости ума чего не так понимаю, но следующая к примеру
тоже очень похоже на #2 или наоборот
Код:
[Выделить все]
(defun str-str-lst (str pat / i);Evgeny Elpanov
  (cond ((= str "") nil)
        ((setq i (vl-string-search pat str))
         (cons (substr str 1 i)
               (str-str-lst (substr str (+ (strlen pat) 1 i)) pat)
         ) ;_  cons
        )
        (t (list str))
  ) ;_  cond
) ;_  defun

Последний раз редактировалось Олег (jr.), 20.02.2011 в 09:35. Причина: добавлен код
Олег (jr.) вне форума  
 
Непрочитано 20.02.2011, 12:47
#10
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Разница в области применения функции и, соответственно в наличии или отсутствии дополнительных проверок
gomer вне форума  
 
Автор темы   Непрочитано 20.02.2011, 12:50
#11
Nitrogenium

инженер
 
Регистрация: 02.03.2010
Санкт-Петербург
Сообщений: 69
<phrase 1=


Может кто-нить скажет, что значит T?
Nitrogenium вне форума  
 
Непрочитано 20.02.2011, 13:52
#12
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Код:
gomer вне форума  
 
Непрочитано 20.02.2011, 14:47
#13
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Цитата:
Сообщение от Nitrogenium Посмотреть сообщение
Может кто-нить скажет, что значит T?
Логический (Булевский) тип данных, всего два возможных значения: T- True - Истина и nil - false - Ложь
__________________
Почему все вдруг становятся умными, когда уже не надо?

Последний раз редактировалось Disney, 20.02.2011 в 15:15.
Disney вне форума  
 
Непрочитано 20.02.2011, 15:14
#14
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Вобще в автолиспе нет как таковых булевских типов - то что подразумевают под истинной (true, #t, итд) - может являтся абсолютно любым значением кроме пустого списка - то есть nil или '() - что является абсолютными синонимами - то есть по сути T является атомом без значения.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 20.02.2011, 15:34
#15
Pastor

это только кличка
 
Регистрация: 22.10.2006
Москва
Сообщений: 252


Цитата:
Может кто-нить скажет, что значит T?
Это значит, что по странице 59 книги Полещука твой взгляд никогда не пробегал...
Ну, или по странице 12 другой книги того же Полещука...
__________________
...в шее моей жилы железные, и лоб мой - медный...
Pastor вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Преобразование строки в список



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу) Red Nova LISP 5021 16.06.2025 17:50
SCAD Office 11.1 Новые возможности EUDGEN SCAD 632 20.02.2013 17:13
преобразование DWG-файла в список команд x11r6 AutoCAD 6 14.02.2008 09:43
DwgRuLispLib: Преобразование variant или safearray в список Кулик Алексей aka kpblc Библиотека функций 24 30.11.2007 18:53
Помощь по Лире Серега М Лира / Лира-САПР 52 28.05.2007 02:47