明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1390|回复: 6

[提问] 怎样去除多行文字里的控制符

[复制链接]
发表于 2018-6-7 16:43:05 | 显示全部楼层 |阅读模式
提取出的多行文字里包含了“\p”、“\w”这些
要怎么才能提取出纯的文本呢?
发表于 2018-6-7 16:45:44 | 显示全部楼层
简单办法是炸开,上策是:正则表达式
 楼主| 发表于 2018-6-7 16:47:37 | 显示全部楼层
自贡黄明儒 发表于 2018-6-7 16:45
简单办法是炸开,上策是:正则表达式

炸开不太合适
正则表达式怎么弄的?能说下吗
发表于 2018-6-8 08:47:33 | 显示全部楼层
http://bbs.mjtd.com/thread-96376-1-1.html

  1.           ;文字刷子程序
  2. (defun wenzishua (entype entype_source ob source_text en1 ent)
  3.           ; cad多行文字
  4.   (if (= entype "MTEXT")
  5.     (progn
  6.       (vla-put-TextString ob source_text)
  7.       (entupd en1)
  8.       (entupd ent)
  9.     )
  10.   )
  11.           ;去掉多行文字无用格式符号
  12.   (if (= entype_source "MTEXT")
  13.     (setq source_text (mtext2text source_text))
  14.   )
  15.           ; cad单行文字
  16.   (if (= entype "TEXT")
  17.     (progn
  18.       (vla-put-TextString ob source_text)
  19.       (entupd en1)
  20.       (entupd ent)
  21.     )
  22.   )
  23.           ; 天正文字的内容格式刷
  24.   (if (or
  25.   (= entype "TCH_TEXT")
  26.   (= entype "TCH_ELEVATION")
  27.       )
  28.     (progn
  29.       (vlax-put-property ob 'Text source_text)
  30.       (entupd en1)
  31.       (entupd ent)
  32.     )
  33.   )
  34.           ; 天正图名、标高的内容格式刷
  35.   (if (= entype "TCH_DRAWINGNAME")
  36.     (progn
  37.       (vlax-put-property ob 'NameText source_text)
  38.       (entupd en1)
  39.       (entupd ent)
  40.     )
  41.   )
  42.           ; 属性文字 只改"标记"
  43.   (if (= entype "ATTDEF")
  44.     (progn
  45.       (vla-put-TagString ob source_text) ;改标记
  46.       (entupd en1)
  47.       (entupd ent)
  48.     )
  49.   )
  50.           ; 块中属性文字 只改"默认"
  51.   (if (= entype "ATTRIB")
  52.     (progn
  53.       (vla-put-TextString ob source_text) ;改默认
  54.       (entupd en1)
  55.       (entupd ent)
  56.     )
  57.   )
  58. )

  59.           ;提取多行文字,去除无用格式符号--来自明经
  60. (defun mtext2text (MTextString / regex s)
  61.   (setq regex (vlax-create-object "Vbscript.RegExp"))
  62.           ;引用正则表达式控件
  63.   (vlax-put-property regex "IgnoreCase" 0) ;不忽略大小写
  64.   (vlax-put-property regex "Global" 1)  ;匹配方式,全文字匹配
  65.   (setq s MTextString)
  66.           ;替换\\字符
  67.   (vlax-put-property regex "Pattern" "\\\\\\\\")
  68.   (setq s (vlax-invoke-method regex "Replace" s (chr 1)))
  69.           ;替换\{字符
  70.   (vlax-put-property regex "Pattern" "\\\\{")
  71.   (setq s (vlax-invoke-method regex "Replace" s (chr 2)))
  72.           ;替换\}字符
  73.   (vlax-put-property regex "Pattern" "\\\\}")
  74.   (setq s (vlax-invoke-method regex "Replace" s (chr 3)))
  75.           ;删除段落缩进格式
  76.   (vlax-put-property regex "Pattern" "\\\\pi(.[^;]*);")
  77.   (setq s (vlax-invoke-method regex "Replace" s ""))
  78.           ;删除制表符格式
  79.   (vlax-put-property regex "Pattern" "\\\\pt(.[^;]*);")
  80.   (setq s (vlax-invoke-method regex "Replace" s ""))
  81.           ;删除堆迭格式
  82.   (vlax-put-property
  83.     regex
  84.     "Pattern"
  85.     "\\\\S(.[^;]*)(\\^|#|\\\\)(.[^;]*);"
  86.   )
  87.   (setq s (vlax-invoke-method regex "Replace" s ""))
  88.           ;删除字体、颜色、字高、字距、倾斜、字宽、对齐格式
  89.   (vlax-put-property
  90.     regex
  91.     "Pattern"
  92.     "(\\\\F|\\\\f|\\\\C|\\\\H|\\\\\T|\\\\Q|\\\\W|\\\\A)(.[^;]*);"
  93.   )
  94.   (setq s (vlax-invoke-method regex "Replace" s ""))
  95.           ;删除下划线、删除线格式
  96.   (vlax-put-property
  97.     regex
  98.     "Pattern"
  99.     "(\\\\L|\\\\O|\\\\l|\\\\o)"
  100.   )
  101.   (setq s (vlax-invoke-method regex "Replace" s ""))
  102.           ;删除不间断空格格式
  103.   (vlax-put-property regex "Pattern" "\\\\~")
  104.   (setq s (vlax-invoke-method regex "Replace" s ""))
  105.           ;删除换行符格式
  106.   (vlax-put-property regex "Pattern" "\\\\P")
  107.   (setq s (vlax-invoke-method regex "Replace" s ""))
  108.           ;删除换行符格式(针对Shift+Enter格式)
  109.   (vlax-put-property regex "Pattern" "\n")
  110.   (setq s (vlax-invoke-method regex "Replace" s ""))
  111.           ;删除{}
  112.   (vlax-put-property regex "Pattern" "({|})")
  113.   (setq s (vlax-invoke-method regex "Replace" s ""))

  114.           ;替换回\\,\{,\}字符
  115.   (vlax-put-property regex "Pattern" "\\x01")
  116.   (setq s (vlax-invoke-method regex "Replace" s "\\"))
  117.   (vlax-put-property regex "Pattern" "\\x02")
  118.   (setq s (vlax-invoke-method regex "Replace" s "{"))
  119.   (vlax-put-property regex "Pattern" "\\x03")
  120.   (setq s (vlax-invoke-method regex "Replace" s "}"))

  121.   (vlax-release-object regex)
  122.   s
  123. )
发表于 2023-6-27 19:39:32 | 显示全部楼层
ㄘ丶转裑ㄧ灬 发表于 2018-6-8 08:47
http://bbs.mjtd.com/thread-96376-1-1.html

大佬  怎么在这个基础上去除多行文字对齐样式  如:\\pxql这类
发表于 2023-6-28 17:03:07 | 显示全部楼层
蛋疼的东东 发表于 2023-6-27 19:39
大佬  怎么在这个基础上去除多行文字对齐样式  如:\\pxql这类


本帖子中包含更多资源

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

x
发表于 2023-6-28 20:54:02 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 22:24 , Processed in 0.192808 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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