明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 130|回复: 0

分享一个字符串左剪切和右剪切的函数

[复制链接]
发表于 13 小时前 | 显示全部楼层 |阅读模式
本帖最后由 hubeiwdlue 于 2025-2-25 09:31 编辑
  1. (defun wdl_str->lst (string strkey / po strlst xlen)
  2.   (setq xlen (1+ (strlen strkey)))
  3.   (while (setq po (vl-string-search strkey string))
  4.     (setq strlst (cons (substr string 1 po) strlst))
  5.     (setq string (substr string (+ po xlen)))
  6.   )
  7.   (vl-remove "" (reverse (cons string strlst)))
  8. )
  9. ;剪切字符串保留左侧部分字符串
  10. ;srting,被剪切字符串,dstr,剪切字符,flag控制参数,t返回值不删除dstr本身,nil返回值删除dstr本身
  11. (defun str-left-trim(string dstr flag / newstr1 newstr2 strlst strlst1)
  12.   (setq strlst (wdl_str->lst string dstr))
  13.   (setq strlst1 (reverse(cdr(reverse strlst))))
  14.   (setq newstr1 (apply 'strcat (mapcar '(lambda (x) (strcat x dstr)) strlst1)))
  15.   (setq newstr2 (substr newstr1 1 (- (strlen newstr1) (strlen dstr))))
  16.   (if flag
  17.     newstr1
  18.     newstr2
  19.   )
  20. )
  21. ;剪切字符串保留右侧部分字符串
  22. ;srting,被剪切字符串,dstr,剪切字符,flag控制参数,t返回值不删除dstr本身,nil返回值删除dstr本身
  23. (defun str-right-trim(string dstr flag / newstr1 newstr2 strlst strlst1)
  24.   (setq strlst (wdl_str->lst string dstr))
  25.   (setq strlst1 (cdr strlst))
  26.   (setq newstr1 (apply 'strcat (mapcar '(lambda (x) (strcat dstr x)) strlst1)))
  27.   (setq newstr2 (substr newstr1 (1+ (strlen dstr)) (strlen newstr1)))
  28.   (if flag
  29.     newstr1
  30.     newstr2
  31.   )
  32. )
  33. (str-left-trim "祖//国//万//岁" "//" t);"祖//国//万//"
  34. (str-left-trim "祖//国//万//岁" "//" nil);"祖//国//万"


评分

参与人数 1明经币 +1 收起 理由
tryhi + 1

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-25 23:22 , Processed in 0.167671 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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