明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1783|回复: 5

vl-string-position返回值的问题

[复制链接]
发表于 2005-12-27 12:18 | 显示全部楼层 |阅读模式
(vl-string-position (ascii " ")  "aa bb") 返回2,而(vl-string-position (ascii " ")  "沥沥 bb")返回4。我想只得到字的位数而不是字符的位数,即(vl-string-position (ascii " ")  "沥沥 bb")也返回2,(vl-string-position (ascii " ")  "沥a沥 bb")返回3,行不行啊?谢谢
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2005-12-27 12:27 | 显示全部楼层
本帖最后由 作者 于 2005-12-27 14:45:10 编辑

当然可以,就等你写出来!  8-)

 

寻找字串中有指定的"字"元
(vl-str-position <str> <start-pos> <from-end-p>)

引数

str
要搜寻的字串。

start-pos
字串中要开始搜寻的位置 (第一个字元为 0);NIL则为 0。

from-end-p
如果指定 T 给引数,搜寻开始于字串的尾端,继续反向到 pos。

传回值
从字串的开端<start-pos>在位移找到STR;如果找不到则为 nil。

范例
(setq STR "沥SDDF 沥 bb")
(VL-STR-POSITION STR " " NIL T)
=>7

(setq STR "沥SDDF 沥 bb")
(VL-STR-POSITION STR " " NIL NIL)
=>5

(setq STR "沥SDDF 沥 bb")
(VL-STR-POSITION STR " " 1 T)
=>6

(setq STR "沥SDDF 沥 bb")
(VL-STR-POSITION STR " " 1 NIL)
=>4

(setq STR "沥SDDF 沥 bb")
(VL-STR-POSITION STR "R" 1 NIL)
=>NIL

(setq STR "沥SDDF 沥 bb")
(VL-STR-POSITION STR "R" 1 T)
=>NIL

(setq STR "沥沥 bb")
(VL-STR-POSITION STR " " NIL NIL)
=>2

(setq STR "沥a沥 bb")
(VL-STR-POSITION STR " " NIL NIL)
=>3

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2005-12-27 16:19 | 显示全部楼层

原来要自己写,我写了一个望版主指教。:)

;(get_number "a李 fgag")返回3

(defun get_number (str / str_list i)
    (setq str_list (istr str))
    (setq i 1)
    (while (/= (car str_list) " ")
        (setq str_list (cdr str_list))
        (setq i (+ i 1))
    )
   i
)
        
        

;*******************************************************************
;此程序来自明经通道
;例: (istr "明经CAD社区")返回("明" "经" "C" "A" "D" "社" "区")

(defun istr (tt / nn k str_k)
 (setq nn (strlen tt) k 1)
 (while (<= k nn)
         (if (> (ascii (substr tt k 2)) 127)
         (setq str_k (append str_k (list (substr tt k 2))) k (+ k 2))       
         (setq str_k (append str_k (list (substr tt k 1))) k (+ k 1))
         )      
 )
str_k
)
;*******************************************************************

发表于 2005-12-27 17:23 | 显示全部楼层

我也不清楚中文是要(> 127) or (> 159)

get_number 应再改得更通用较好

 楼主| 发表于 2005-12-28 08:30 | 显示全部楼层

龙版主是用什么方法编的?能不能介绍一下思路啊?

发表于 2005-12-28 11:56 | 显示全部楼层
  1. 还能如何编!跟你的一样!
  2. (vl-load-com)
  3. (vl-doc-export 'VL-STR-POSITION)
  4. (defun VL-STR-POSITION (STR DELIM POSL POSR / LST)
  5.   (setq LST (TEXT_TO_LST STR))
  6.   (if POSL
  7.     (repeat POSL
  8.       (setq LST (cdr LST))
  9.     )
  10.   )
  11.   (if POSR
  12.     (progn
  13.       (setq LST (reverse LST))
  14.       (if (setq TMP (vl-position DELIM LST))
  15. (- (1- (length LST)) TMP)
  16. NIL
  17.       )
  18.     )
  19.     (vl-position DELIM LST)
  20.   )
  21. )
  22. ;;WKAI
  23. (vl-doc-export 'TEXT_TO_LST)
  24. (defun TEXT_TO_LST (TEXT / N CHAR STRLST)
  25.   (setq N 1)
  26.   (while (<= N (strlen TEXT))
  27.     (setq CHAR (substr TEXT N 1))
  28.     (if (> (ascii CHAR) 159)
  29.       (and (substr TEXT (1+ N) 1)
  30.     (setq STRLST (cons (substr TEXT N 2) STRLST))
  31.     (setq N (1+ N))
  32.       )
  33.       (setq STRLST (cons CHAR STRLST))
  34.     )
  35.     (setq N (1+ N))
  36.   )
  37.   (reverse STRLST)
  38. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-1 20:01 , Processed in 0.172065 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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