乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 21|回复: 0

删除删除线文本

[复制链接]

1

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2017-8-1 18:51:59 | 显示全部楼层 |阅读模式
关于使用删除线格式删除文本的最佳方法的任何想法,但不影响任何其他格式?下面的示例删除所有带有删除线格式的文本,以及不匹配而不使用删除线格式的文本,因为它使用 String。Replace 替换字符串替换字符串中的所有匹配项,我尝试使用MTextFragmentCallback,所以我可以使用MTextFragment.Strikethrough来避免解析每个字符,但是没有以某种方式索引片段的位置,我看不到其他选择。查看 MText.Contents,如果嵌套在其他格式中,则删除线文本看起来像是用 {\K.......} 或 {....\K....\k....} 换行。我猜我需要找到删除线格式代码的位置并使用String.Remove来删除它们? [CommandMethod(“RemoveStrikethroughText”)]。
public void RemoveStrikethroughText()。
{。
using (Transaction trx = Doc.TransactionManager.StartTransaction())。
{。
PromptEntityOptions peo = new PromptEntityOptions(“\nSelect Mtext or table”);。
嘀SetRejectMessage(“\nNot Mtext or table”);。
嘀AddAllowedClass(typeof(MText), true);。
嘀AllowObjectOnLockedLayer = true;。

PromptEntityResult per = Ed.GetEntity(peo);。
如果(每.状态 != PromptStatus.OK)。
{。
返回;。
}。
List frags = new List();。
MTextFragmentCallback cb = (frag, obj) =>。
{。
如果(frag.删除线)。
{。
碎片,Add(frag.文本);。
Ed.WriteLine($“Removeing: {frag.文本}“);。
}。
                    。
return MTextFragmentCallbackStatus.Continue;。
};。
多行消息 mt = per.ObjectId.GetDBObject(OpenMode.ForWrite);。
吨ExplodeFragments(cb);。
foreach (var frag in frags)。
{。
吨含量 = 吨,Contents.Replace(frag, String.Empty);。
}。
                。
trx.Commit();。
}。
}。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 13:53 , Processed in 0.144213 second(s), 54 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表