我想要做的是替换剪贴板中的部分文本,但问题是它是html格式的文本,我无法使用C#中的下面给出的代码修改其内容。任何解决方案?
复制我的行为的步骤:
将剑桥高级学习者词典4中的条目复制到剪贴板或将任何其他html格式的文本复制到剪贴板
2-在Windows窗体应用程序中使用这些C#代码来修改和替换文本,同时保持其html格式:
private void button1_Click(object sender, EventArgs e)
{
string myStr = Clipboard.GetText(TextDataFormat.Html);
myStr.Replace("Cambridge Advanced Learner's Dictionary - 4th Edition", "******************************");
Clipboard.SetText(myStr,TextDataFormat.Html);
}
但它似乎根本不起作用!
注意:我想保留html格式,我不想从其html格式中删除字符串。
我使用了Regex,它似乎在我使用时起作用:
myStr = Regex.Replace(myStr, "Cambridge Advanced Learner's Dictionary - 4th Edition", "");
但是当我想使用时:
myStr = Regex.Replace(myStr, "Cambridge Advanced Learner's Dictionary - 4th Edition<br /><br />", "");
它不起作用!任何删除这些HTML标签的解决方案:<br /><br />
?
答案 0 :(得分:0)
您必须使用特殊HTML Clipboard Format (link to description)格式化文本。
它看起来像这样(工作示例与链接中给出的exmaple不同,它具有错误的Start-和End-数字):
Version:1.0
StartHTML:00085
EndHTML:00287
StartFragment:00105
EndFragment:00269
<!--StartFragment--><HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=UTF-8" /><TITLE></TITLE></HEAD><BODY>YOUR <B>HTML FORMATTED</B> TEXT GOES HERE!</BODY></HTML><!--EndFragment-->
同时确保在顶部填写正确的开始和结束编号。更具体地说,您必须调整EndHTML
,EndFragment
和EndSelection
以反映文字长度的变化。单独更换是行不通的。
答案 1 :(得分:0)
使用Regex在某种程度上解决了这个问题:
private void button1_Click(object sender, EventArgs e)
{
string myStr = Clipboard.GetText(TextDataFormat.Html);
myStr = Regex.Replace(myStr, "Cambridge Advanced Learner's Dictionary - 4th Edition", "");
Clipboard.SetText(myStr,TextDataFormat.Html);
}
但仍无法从剪贴板中删除<br /><br />
等HTML标记。
答案 2 :(得分:0)