明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1189|回复: 4

[基础] 文字添加or删除前后缀,正则表达式内容替换工具

[复制链接]
发表于 2024-1-25 16:04:52 | 显示全部楼层 |阅读模式
本帖最后由 fangmin723 于 2024-1-28 14:35 编辑

文字处理代码(关键代码,非全部):
  1. /// <summary>
  2. /// 文字添加或删除前后缀
  3. /// </summary>
  4. /// <param name="isadd">添加前后缀还是删除前后缀</param>
  5. /// <param name="ispre">是否添加前缀</param>
  6. /// <param name="prefix">前缀</param>
  7. /// <param name="issuf">是否添加后缀</param>
  8. /// <param name="suffix">后缀</param>
  9. public static void Tools_AddOrDelFix(bool isadd, bool ispre, string prefix, bool issuf, string suffix)
  10. {
  11.     var objids = Tools_GetTextEntity();
  12.     if (!objids.Any()) return;
  13.     var Db = HostApplicationServices.WorkingDatabase;
  14.     var Doc = Acap.DocumentManager.MdiActiveDocument;
  15.     var Ed = Doc.Editor;
  16.     using var dloc = Doc.LockDocument();
  17.     using var tr = Db.TransactionManager.StartTransaction();
  18.     objids.ForEach(id =>
  19.     {
  20.         var entity = tr.GetObject(id, OpenMode.ForWrite) as Entity;
  21.         if (isadd)
  22.         {
  23.             if (entity is DBText text)
  24.                 text.TextString = $"{(ispre ? prefix : "")}{text.TextString}{(issuf ? suffix : "")}";
  25.             if (entity is MText mText)
  26.                 mText.Contents = $"{(ispre ? prefix : "")}{mText.Contents}{(issuf ? suffix : "")}";
  27.         }
  28.         else
  29.         {
  30.             if (entity is DBText text)
  31.             {
  32.                 if (ispre)
  33.                     text.TextString = text.TextString.TrimStart(prefix.ToCharArray());
  34.                 if (issuf)
  35.                     text.TextString = text.TextString.TrimEnd(suffix.ToCharArray());
  36.             }
  37.             if (entity is MText mText)
  38.             {
  39.                 if (ispre)
  40.                     mText.Contents = mText.Contents.TrimStart(prefix.ToCharArray());
  41.                 if (issuf)
  42.                     mText.Contents = mText.Contents.TrimEnd(suffix.ToCharArray());
  43.             }
  44.         }
  45.     });
  46.     tr.Commit();
  47. }
  48. /// <summary>
  49. /// 文字内容替换
  50. /// </summary>
  51. /// <param name="regstr">正则表达式或者字符串</param>
  52. /// <param name="newstr">替换内容</param>
  53. /// <param name="iscase">是否区分大小写,默认 :false不区分</param>
  54. /// <param name="isall">是否全字匹配,默认:false不全字匹配</param>
  55. public static void Tools_ReplacePattern(string regstr, string newstr, bool iscase = false, bool isall = false)
  56. {
  57.     var objids = Tools_GetTextEntity();
  58.     if (!objids.Any()) return;
  59.     if (isall) regstr = $"^{regstr}$";
  60.     var Db = HostApplicationServices.WorkingDatabase;
  61.     var Doc = Acap.DocumentManager.MdiActiveDocument;
  62.     var Ed = Doc.Editor;
  63.     using var dloc = Doc.LockDocument();
  64.     using var tr = Db.TransactionManager.StartTransaction();
  65.     objids.ForEach(id =>
  66.     {
  67.         var entity = tr.GetObject(id, OpenMode.ForWrite) as Entity;
  68.         if (entity is DBText text)
  69.         {
  70.             text.TextString = iscase
  71.                 ? Regex.Replace(text.TextString, regstr, newstr)
  72.                 : Regex.Replace(text.TextString, regstr, newstr, RegexOptions.IgnoreCase);
  73.         }
  74.         if (entity is MText mText)
  75.             mText.Contents = iscase
  76.                 ? Regex.Replace(mText.Contents, regstr, newstr)
  77.                 : Regex.Replace(mText.Contents, regstr, newstr, RegexOptions.IgnoreCase);
  78.     });
  79.     tr.Commit();
  80. }


2024.1.28:增加异常处理



本帖子中包含更多资源

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

x
发表于 2024-1-25 16:39:41 | 显示全部楼层
是不是发错地方了。。
发表于 2024-1-25 16:40:47 | 显示全部楼层
不好意思,是我看错了。。
发表于 2024-1-25 17:07:42 | 显示全部楼层
谢谢分享原创工具
仅ZWcad用嘛?
 楼主| 发表于 2024-1-25 18:32:36 | 显示全部楼层
lxl217114 发表于 2024-1-25 17:07
谢谢分享原创工具
仅ZWcad用嘛?

附件是仅zwcad使用的,我没有autocad,所以暂时没有发布AutoCAD的dll
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 03:19 , Processed in 0.175736 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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