1. ;把字符串转成表
    2. ;(STR->CHRS "比如把字符串反转遇到汉字lisp也无语")(vl-string->list "比如把字符串反转遇到汉字lisp也无语")
    3. ;返回:("比" "如" "把" """ "" "" "" "" "" "" "" "l" "i" "s" "p" "" "" "")
    4. (defun str->chrs(str / a c)
    5. (setq a(vl-string->list str))
    6. (while a
    7. (if(< (car a) 129)
    8. (setq c (cons (chr (car a)) c) a (cdr a))
    9. (setq c (cons (strcat (chr (car a)) (chr (cadr a))) c) a (cddr a))
    10. )
    11. )
    12. (reverse c)
    13. )
    14. (apply 'strcat (reverse (STR->CHRS "比如把字符串反转遇到汉字lisp也无语")))
    15. ;反转字符串
    16. ;(revstr "比如把字符串反转遇到汉字lisp也无语")
    17. ;返回:"语无也psil字汉到遇转反串符字把如比"
    18. (defun revstr(str / c)
    19. (setq str (vl-string->list str))
    20. (while str
    21. (if(< (car str) 129)
    22. (setq c (cons (chr (car str)) c) str (cdr str))
    23. (setq c (cons (strcat (chr (car str)) (chr (cadr str))) c) str (cddr str))
    24. )
    25. )
    26. (apply 'strcat c);(reverse c)
    27. )
    28. ;字符串分割
    29. ;(STRCUT "比如把字符串反转遇到汉字lisp也无语" 2)
    30. ;返回:("比如" "把字" "符串" "反转" "遇到" "汉字" "li" "sp" "也无" "")
    31. (defun strcut(str leg / b c d n)
    32. (setq str (vl-string->list str))
    33. (while str
    34. (if(< (car str) 129)
    35. (setq c (cons (chr (car str)) c) str (cdr str))
    36. (setq c (cons (strcat (chr (car str)) (chr (cadr str))) c) str (cddr str))
    37. )
    38. )
    39. (setq n 1 b "")
    40. (foreach x (reverse c) (if (= (rem n leg) 0) (progn (setq b (strcat b x) d (cons b d) b "")) (setq b (strcat b x))) (setq n (+ n 1)))
    41. (if (/= b "") (setq d (cons b d)))
    42. (reverse d)
    43. )