本帖最后由 dcl1214 于 2024-4-19 00:00 编辑
传入任意字母,程序将最后一位升位
- (DEFUN $sheng-wei$ (sTR LST / a as s s-new str-new to zz)
- ;升位
- ;示例($sheng-wei$ "ZzZ" nil)
- (SETQ ZZ (list "A" "B" "C" "D" "E" "F" "G" "H" "I"
- "J" "K" "L" "M" "N" "O" "P" "Q" "R"
- "S" "T" "U" "V" "W" "X" "Y" "Z" "A"
- "a" "b" "c" "d" "e" "f" "g" "h" "i"
- "j" "k" "l" "m" "n" "o" "p" "q" "r"
- "s" "t" "u" "v" "w" "x" "y" "z" "a"
- )
- )
- (if (AND STR
- (= (TYPE STR) 'STR)
- (SETQ S (MAPCAR 'CHR (vl-string->list STR)))
- (SETQ S (MAPCAR (FUNCTION (LAMBDA (A) (CAR (MEMBER A ZZ)))) S))
- (SETQ S (VL-REMOVE NIL S))
- )
- (progn
- (setq As nil)
- (SETQ S (REVERSE S))
- (setq to t)
- (while (and to s)
- (setq a (car s))
- (if (member a (list "Z" "z"))
- ()
- (setq to nil)
- )
- (setq a (CADR (member a ZZ)))
- (setq As (cons a As))
- (setq s (cdr s))
- )
- (setq As (reverse As))
- (setq s-new (reverse (append As s)))
- (setq str-new (APPLY 'STRCAT s-new))
- )
- )
- str-new
- )
|