明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: dcl1214

[源码] 最快的字串分割方法

[复制链接]
发表于 2024-2-19 14:43 | 显示全部楼层
本帖最后由 highflybird 于 2024-2-19 16:15 编辑
baitang36 发表于 2024-2-14 08:58
(defun $zi-chuan-fen-ge$ (str fgf / jg)
                                        ;字符串分割
  (if (and str (= (type str) 'str) fgf  ...


用read和vl-princ-to-string可能会有某些意想不到的效果。
我的代码:
  1. (defun mysplit (str delim / lst i len)
  2.   (setq len (strlen delim))
  3.   (while (setq i (vl-string-search delim str))
  4.     (setq lst (cons (substr str 1 i) lst))
  5.     (setq str (substr str (+ 1 len i)))
  6.   )
  7.   (setq lst (cons str lst))
  8.   (reverse lst)
  9. )
发表于 2024-2-20 11:25 | 显示全部楼层
我用的是如下的方法,没有测试过速度的问题

(setq d (read-line file))
  (while (vl-string-search " " d) (setq d (vl-string-subst "" " " d)));如果点号有空格,替换之
  (while (vl-string-search "," d) (setq d (vl-string-subst " " "," d)));用空格替换逗号
  (setq ddd (read (strcat "(" d ")")));以空格分隔的方式读取点号坐标高程
发表于 2024-2-21 12:59 | 显示全部楼层
感谢大佬分享
发表于 2024-3-5 15:42 | 显示全部楼层
本帖最后由 yxp 于 2024-3-5 15:53 编辑

函数: (split str p)
用法:用 p 短字符串分割 str 长字符串,返回表,p 支持管道符多个短字符串并列
示例:(split “abcfarecadefge” “c|f”) 返回 (“ab” “are” “ade” “ge”)
(defun split (s p / r)
(setq r (vlax-create-object "vbscript.regexp"))
(vlax-put-property r 'Global 1)
(vlax-put-property r 'Pattern p)
(read (strcat "(\"" (vlax-invoke r 'Replace s "\" \"") "\")"))
)

来自:https://blog.csdn.net/yxp_xa/article/details/72636232
回复 支持 1 反对 0

使用道具 举报

发表于 2024-3-5 16:44 | 显示全部楼层
highflybird 发表于 2024-2-19 14:43
用read和vl-princ-to-string可能会有某些意想不到的效果。
我的代码:

对比一下,这个我在用
发表于 2024-4-7 12:15 | 显示全部楼层
我不服           
但是没办法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-13 23:01 , Processed in 0.122342 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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