明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1558|回复: 2

[讨论] 一个初学者的求助字符串提取

[复制链接]
发表于 2009-10-11 22:49:00 | 显示全部楼层 |阅读模式

"071 1 051 55 052 30 105 10 106 1 106 4"

"071, 5.0, 071 1 051 1 053 1 105 1 106 1 104 1 "

"071, 5.0, 071 1 052 1 062 4  "       

本人刚学习LISP,现向大家请教一 问题,我要循环读取字符串,向上面3组,每次读出后我都要提取,如“071”,“1”,“051”。。。。。

但是每次读出的数位数不定,中间倒是固定间隔一个空格,

所以在LISP中怎样实现提取

发表于 2009-10-12 10:13:00 | 显示全部楼层

(setq wenzi "123 456")

(setq wenzilen (strlen wenzi))  ;取出字符串的长度   结果:7
(setq zhh (vl-string-translate " " "#" wenzi))  ;转换字符,把空格转换为#    结果:"123#456"

(setq weizhi (vl-string-search "#" zhh))  ;找出#的位置    结果:3

(setq qianzhui (substr wenzi 1 weizhi))   ;取出#前的字符 结果:123

(setq shengyu (substr wenzi (+ 2 weizhi))) 取出剩余的字符串 结果:456

用substr命令以此类推,应该能得到所有的字符

发表于 2009-10-12 12:34:00 | 显示全部楼层

……
(setq dst "071 1 051 55 052 30 105 10 106 1 106 4") ;用空格分开的数据字串
(setq dsl (read(strcat "(" dst ")"))) ;数据变成表
(setq d1 (nth 0 dsl)) ;读取第一个数
(setq d2 (nth 1 dsl)) ;读取第二个数
……

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

本版积分规则

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

GMT+8, 2024-11-6 07:35 , Processed in 0.166231 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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