用ascii码一个字一个字地判断呗。我觉得 llsheng_73 写的一个“倒置字符串”应该对你有帮助,原帖找不到了。我根据他的程序也写了一个“每20个汉字或19个半汉字插入40个空格的程序”,给你参考一下  - (defun strcut(str instr / a b ss i str2)
- (setq ss '())
- (if (and (>= (strlen str)0)(<= (strlen str)40))
- (setq b str)
- (progn
- (while (> (strlen str)40)
- (setq b "")
- (while(> str "")
- (if(<(ascii(substr str 1 1))129)
- (cond
- ((< (strlen b) 39)
- (setq b(strcat b(substr str 1 1))
- str(substr str 2)
- )
- (setq str2 str)
- )
- ((= (strlen b) 39)
- (setq b(strcat b(substr str 1 1))
- str(substr str 2)
- )
- (setq b(strcat b instr))
- (setq ss(cons b ss))
- (setq str2 str)
- (setq str "")
- )
- )
- (cond
- ((< (strlen b) 38)
- (setq b(strcat b(substr str 1 2))
- str(substr str 3)
- )
- (setq str2 str)
- )
- ((= (strlen b) 38)
- (setq b(strcat b(substr str 1 2))
- str(substr str 3)
- )
- (setq b(strcat b instr))
- (setq ss(cons b ss))
- (setq str2 str)
- (setq str "")
- )
- ((= (strlen b) 39)
- (setq b(strcat b instr " "))
- (setq ss(cons b ss))
- (setq str2 str)
- (setq str "")
- )
- )
- )
- )
- (setq str str2)
- (while (and (> (strlen str)0)(<= (strlen str)40))
- (setq ss (cons str ss))
- (setq str "")
- )
- )
- (setq i 0
- b "")
- (setq ss(reverse ss))
- (while (< i (length ss))
- (setq b(strcat b (nth i ss)))
- (setq i(+ i 1))
- )
- )
- )
- b
- )
|