找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 480|回复: 5

[求助] [求助]:[0514]文字断行程序问题?

[复制链接]
发表于 2006-5-14 17:14:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
[求助]:[0514]文字断行程序问题?
我想要写一个单行文字可以切断分开的程序
但有个问题在於文字内容中若有中文字,会切出奇怪的代码来.
请教该怎样让程序可以检查出切断的部分,
调整为一个完整的中文字呢?

例如: 选取文字为=> "完成后的图面"
(setq p:es1 (entsel "\n 选取文字:"))
(setq p:eg1 (entget (car p:es1)))
(setq p:1   (cdr (assoc 1 p:eg1)))
(setq p:len (strlen p:1))

;使用时切点选到
(setq p:1:f (substr p:1 3))
回传 "成后的图面" [正确]

(setq p:1:f (substr p:1 4))
回传 "走嶊犒洐? [不正确]

此不正确就是我的问题所在.
烦请个位高手可以解答一下
谢谢~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

发表于 2006-5-14 17:31:17 | 显示全部楼层
一个汉字等于两个西文字符,知道这个就要根据是否为中文进行偏移指针

_$ (strlen "晓东空间")
8
_$ (substr "晓东空间" 1 2)
"晓"
_$ (substr "晓东空间" 3 2)
"东"
_$ (substr "晓东空间" 5 2)
"空"
_$ (substr "晓东空间" 7)
"间"
_$ (vl-string->list "晓东空间")
(207 254 182 171 191 213 188 228)
_$
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-14 17:40:24 | 显示全部楼层
那假如本文中有中文又有英文及数字标点等字元,
那又该怎样判断处理呢?
如:"晓东空间=XDCAD=0060514"
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2006-5-14 18:58:27 | 显示全部楼层
最初由 xyz518mm 发布
[B]那假如本文中有中文又有英文及数字标点等字元,
那又该怎样判断处理呢?
如:"晓东空间=XDCAD=0060514" [/B]


到 函数库 论坛去找“中西拆分”函数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-14 20:00:58 | 显示全部楼层
谢谢版主的解答
不知道版主说的是不是这函数呢?

  1. ;;中西文拆分 By Eachy
  2. (defun yb:string_split (str / strlst strlst1 hz_str e_str)
  3.   (setq strlst (vl-string->list str)
  4. strlst1 '()
  5.   )
  6.   (while strlst
  7.     (cond
  8.       ((> (car strlst) 159)
  9.        (setq e_str nil)
  10.        (if hz_str
  11. (setq hz_str (append (list (car strlst)) hz_str))
  12. (setq hz_str (list (car strlst)))
  13.        )
  14.        (setq strlst (cdr strlst))
  15.        (if (or (< (car strlst) 159)
  16.        (= strlst "")
  17.    )
  18. (if strlst1
  19.    (setq strlst1 (append strlst1 (list hz_str)))
  20.    (setq strlst1 (list hz_str))
  21. )
  22.        )
  23.       )
  24.       ((< (car strlst) 159)
  25.        (setq hz_str nil)
  26.        (if e_str
  27. (setq e_str (append (list (car strlst)) e_str))
  28. (setq e_str (list (car strlst)))
  29.        )
  30.        (setq strlst (cdr strlst))
  31.        (if (or (> (car strlst) 159)
  32.        (= strlst "")
  33.    )
  34. (if strlst1
  35.    (setq strlst1 (append strlst1 (list e_str)))
  36.    (setq strlst1 (list e_str))
  37. )
  38.        )
  39.       )
  40.     )
  41.   )
  42.   (mapcar 'vl-list->string (mapcar 'reverse strlst1))
  43. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2006-5-14 20:20:51 | 显示全部楼层
是这个,但贴的函数有错误。你应该去研究下晓东工具箱中的“文字断开”类中用到函数的思路。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-19 00:33 , Processed in 0.195204 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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