找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1610|回复: 1

[字符串] XD::String:Strpad字符串用指定字符首位补位

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-9-27 10:05:28 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::String:Strpad
调用格式: (XD::String:Strpad intval before sp after)
参数说明: intVal:要补位的数或字符串。;
before: 数,小数位前面的位数,
字符串,当前字符串前面的个数(包括当前);
sp 补位字符;
after 小数位数,对字符串,当前字符串后面的字符个数
返回值: 字符串
函数简介: 字符串用指定字符首位补位
函数来源: 二次修改
函数作者:
适用版本: XDRX API 
最后更新时间: 2013-09-27
备注: 最后更新2017.8.18
演示图片: -

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

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

×
本帖最后由 newer 于 2017-8-18 12:51 编辑

  1. ;|;
  2. 功  能  字符串用指定字符首位补位
  3. 参  数  intVal:要补位的数或字符串。;
  4.         before:   数,小数位前面的位数,                      字符串,当前字符串前面的个数(包括当前);
  5.         sp      补位字符;
  6.         after   小数位数,对字符串,当前字符串后面的字符个数
  7. 示  例  (XD::String:Strpad 123 4 "0" 0)
  8. 注  意  以上示例将返回“0123”。
  9. |;
  10. (defun XD::String:Strpad (intval before sp after / nstr str1 val1 zeros)
  11.   (xdrx_sysvar_push '(("Dimzin" 0)))
  12.   (if (or (= (type intval) 'INT) (= (type intval) 'REAL))
  13.     (progn
  14.       (setq str1 (xdrx_math_modf intval))
  15.       (setq val1 (fix (car str1)))
  16.       (setq nstr (strcat (apply        'strcat
  17.                                 (repeat        (- before (xdrx_string_length (itoa val1)))
  18.                                   (setq zeros (cons sp zeros))
  19.                                 )
  20.                          )
  21.                          (itoa val1)
  22.                  )
  23.       )
  24.       (cond ((> after 0)
  25.              (setq nstr        (strcat        nstr
  26.                                 "."
  27.                                 (car (xdrx_string_regexps
  28.                                        "(?<=\\.)[0-9]+"
  29.                                        (if (= (cadr str1) 0.0)
  30.                                          "0.0"
  31.                                          (rtos (cadr str1) 2 after)
  32.                                        )
  33.                                      )
  34.                                 )
  35.                         )
  36.              )
  37.             )
  38.             ((< after 0)
  39.              (if (= (type intval) 'REAL)
  40.                (setq nstr (strcat nstr
  41.                                   "."
  42.                                   (car (xdrx_string_regexps
  43.                                          "(?<=\\.)[0-9]+"
  44.                                          (vl-princ-to-string (cadr str1))
  45.                                        )
  46.                                   )
  47.                           )
  48.                )
  49.              )
  50.             )
  51.       )
  52.     )
  53.     (progn (setq nstr (strcat (apply 'strcat
  54.                                      (repeat (- before (xdrx_string_length intval))
  55.                                        (setq zeros (cons sp zeros))
  56.                                      )
  57.                               )
  58.                               intval
  59.                       )
  60.            )
  61.            (setq zeros nil)
  62.            (setq nstr
  63.                   (strcat
  64.                     nstr
  65.                     (apply 'strcat (repeat after (setq zeros (cons sp zeros))))
  66.                   )
  67.            )
  68.     )
  69.   )
  70.   (xdrx_sysvar_pop)
  71.   nstr
  72. )

_$ (XD::String:Strpad 234.94 5 "0" 3)
"234.940"
_$ (XD::String:Strpad 234.94 6 "0" 4)
"234.9400"
_$ (XD::String:Strpad 234.94 12 "0" 4)
"0000234.9400"
_$ (XD::String:zeropad 234 12 "0" 4)
"0000234.0000"
_$ (XD::String:Strpad 234 12 "0" 0)
"000000000234"
_$ (XD::String:Strpad 0 12 "0" 0)
"000000000000"
_$ (XD::String:Strpad 0.0 3 "0" 0)
"000"
_$ (XD::String:Strpad 0.0 3 "0" 4)
"0.0000"
_$

评分

参与人数 1D豆 +5 收起 理由
xshrimp + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2013-9-29 21:36:19 | 显示全部楼层
  1. (defun XD::String:Strpad (Val pad sp str / zeros nstr)  (setvar "Dimzin" 0)
  2.   (strcat (apply 'strcat
  3.                  (repeat (- pad (strlen (rtos Val 2 str)))
  4.                    (setq zeros (cons sp zeros))
  5.                  )
  6.           )
  7.           (rtos Val 2 str)
  8.   )
  9. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 18:59 , Processed in 0.356466 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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