这两天学习下正则表达式,综合几位前辈的代码,自己也整了一个,这玩意儿处理字符串来那真是分分钟的事
(正则传送门 http://bbs.mjtd.com/thread-170508-1-1.html)
从此可以抛弃其它的方法了,虽然仅仅只有一个,还是收集的别人的,也忘了是哪位前辈的了,在此谢过了:)
虽然自己不需要了,直接删了又觉得可惜,故想到在此开一帖,专门留着回收大伙儿已经不需要的但功能还不错的函数。
先来一个(忘了是哪位的大师的了) - ;; 按照一定的长度,将字符串进行分割成表(支持汉字双字节)
- ;; 参数str:要处理的字符串
- ;; MaxLen:分割成表的字符串最大长度
- ;; 返回: 分割为字符串最大长度为MaxLen的表
- (defun DD-STR-DividedByLength(str MaxLen / alist pf strc strlist)
- (setq alist (vl-string->list str)
- pf 0
- strc ""
- )
- (while alist
- (if (< pf MaxLen)
- (progn (setq pf (1+ pf))
- (if (< (car alist) 129) ;car返回表中的第一个元素
- (setq strc (strcat strc (chr (car alist)))
- alist (cdr alist) ;返回去掉了第一个元素的表
- )
- (setq strc (strcat strc (chr (car alist)) (chr (cadr alist)))
- ;cadr返回表的第二个元素
- alist (cddr alist) ;cddr返回去掉了前两个元素的表
- )
- )
- )
- (progn
- (setq strlist (cons strc strlist)
- pf 0
- strc ""
- )
- )
- )
- (if (not alist)
- (setq strlist (cons strc strlist))
- ) ;将最后不够最大长度的字符串加进表中
- )
- (reverse strlist)
- )
|