删除删除线文本
关于使用删除线格式删除文本的最佳方法的任何想法,但不影响任何其他格式?下面的示例删除所有带有删除线格式的文本,以及不匹配而不使用删除线格式的文本,因为它使用 String。Replace 替换字符串替换字符串中的所有匹配项,我尝试使用MTextFragmentCallback,所以我可以使用MTextFragment.Strikethrough来避免解析每个字符,但是没有以某种方式索引片段的位置,我看不到其他选择。查看 MText.Contents,如果嵌套在其他格式中,则删除线文本看起来像是用 {\K.......} 或 {....\K....\k....} 换行。我猜我需要找到删除线格式代码的位置并使用String.Remove来删除它们? 。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();。
}。
}。
。
**** Hidden Message *****
页:
[1]