找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 255|回复: 0

[提问] 如何将输入41+42+50*3+52+52转换为41+42+50+50+50+52+52?

[复制链接]

0

主题

0

回帖

26

积分

管理员

积分
26
发表于 2024-2-12 05:10:43 | 显示全部楼层 |阅读模式
;; (abc "41+42+50*3+52+52") →("41" "42" "50" "50" "50" "52" "52")
(defun abc (str / lst a b n tmp)
  (defun StrSpr (str sub / lst n)
    (while (setq n (vl-string-search sub str))
      (setq lst (cons (substr str 1 n) lst)
            str (substr str (+ n (strlen sub) 1))
      )
    )
    (vl-remove "" (reverse (cons str lst)))
  )
  (setq lst (mapcar '(lambda (x)
                       (if (vl-string-search "*" x)
                         (setq a (StrSpr x "*")
                               n (cadr a)
                               a (car a)
                               b (repeat (atoi n)(setq tmp (cons a tmp)))
                         )
                         (list x)
                       )
                     )
                    (StrSpr str "+")
            )
        lst (apply 'append lst)
  )
)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-28 02:03 , Processed in 0.124115 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表