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

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

Формируем переменные из строки в файле

Ответ
Поиск в этой теме
Непрочитано 02.09.2010, 11:02 #1
Формируем переменные из строки в файле
Zaghim
 
Регистрация: 01.07.2010
Сообщений: 521

Подскажите, пожалуйста, цикл, из которого нужно считать 2 числа и слово и запихнуть в переменные, из строки такого типа:

100_286.77552632_Object1

Соответственно переменные должны быть:
а1 = 100
а2 = 286.77552632
а3 = Object1

Всем заранее спасибо!!!!!
Просмотров: 2710
 
Непрочитано 02.09.2010, 11:28
#2
gomer

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


Преобразуй строку в список по разделителю _
пост #5 http://forum.dwg.ru/showthread.php?t=56201
Дальше используй nth
Хотя для таких строк лучше, чтоб файл был
* с расширением csv
* разделитель - ; или пробел
И еще...

Цитата:
Сообщение от Zaghim Посмотреть сообщение
а1 = 100
а2 = 286.77552632
а3 = Object1
Здесь две лишние переменные
gomer вне форума  
 
Непрочитано 02.09.2010, 11:32
#3
Дима_

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


Вот тебе парсер который делит строку на список:
Код:
[Выделить все]
(defun parsing (str s)
  ((lambda (f)
     (f str "" nil))
   (lambda (str tmp ret)
     (if (= str "")
         (if (= tmp "")
             (reverse ret)
             (reverse (cons tmp ret)))
         ((lambda (sym) (if (= sym s)
                            (f (substr str 2) "" (cons tmp ret))
                            (f (substr str 2) (strcat tmp sym) ret)))
          (substr str 1 1))))))
то есть (parsing "100_286.77552632_Object1" "_") венрет список
("100" "286.77552632" "Object1") - ну а уж его по переменным раскидать надеюсь ты справишся.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 02.09.2010, 11:39
#4
Zaghim


 
Регистрация: 01.07.2010
Сообщений: 521


Ниче не понял ни там ни там))))
Нельзя как-нибудь просто в цикле?
Zaghim вне форума  
 
Непрочитано 02.09.2010, 11:47
#5
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))
  )
)
(setq str "100_286.77552632_Object1")
(setq a1 (atoi (nth 0 (cdl-string->list str "_"))))
(setq a2 (atof (nth 1 (cdl-string->list str "_"))))
(setq a3 (nth 2 (cdl-string->list str "_")))
gomer вне форума  
 
Непрочитано 02.09.2010, 11:47
#6
Дима_

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


тебе и там и там - просто цикл - возращает список а его уж присваивай, хотя как уже замеченно в посту 2 - не к чему плодить лишние переменные
(обрати внимание в прцедуре парсинга вобще ни одного setq не используеться - и не чего - работает) но если уж "приперло":
Код:
[Выделить все]
((lambda (lst)
(setq a1 (car lst)
        a2 (cadr lst)
        a3 (caddr lst)))
(parsing "100_286.77552632_Object1" "_"))
ps - опять опоздал
pps - ну соответственно если тебе в a1 и a2 числа нужны:
a1 (atof (car lst))
a2 (atof (cadr lst))
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 02.09.2010 в 11:53.
Дима_ вне форума  
 
Автор темы   Непрочитано 02.09.2010, 11:57
#7
Zaghim


 
Регистрация: 01.07.2010
Сообщений: 521


gomer: СПАСИБИЩЕ!!!!!))))
Zaghim вне форума  
 
Непрочитано 02.09.2010, 11:57
1 | #8
gomer

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу) Red Nova LISP 5021 16.06.2025 17:50
Недокументированные сист. переменные Makswell Справочник команд 114 19.06.2010 21:45
Как перебрать все текстовые строки в открытом Автокадовском файле используя AutoLISP? lexluther LISP 9 26.08.2009 17:37
как узнать сколько layout в файле текущем DWG файле VBA sf Программирование 1 09.03.2005 12:36