簡體   English   中英

在 C# 中替換包含 html 格式字符串的剪貼板中的文本

[英]replacing a text inside clipboard which contains html formatted string in C#

我想要做的是替換剪貼板內的一部分文本,但問題是它是 html 格式的文本,我無法使用下面給定的 C# 代碼修改其內容。 任何解決方案?

復制我所做的步驟:

1- 將劍橋高級學習詞典 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 格式中刪除字符串。


我使用了正則表達式,當我使用時它似乎工作:

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 />

您必須以特殊的HTML 剪貼板格式(指向描述的鏈接)格式化文本。

它看起來像這樣(工作示例與鏈接中給出的示例不同,它具有錯誤的開始和結束編號):

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-->

還要確保在頂部填寫正確的開始和結束編號。 更具體地說,您必須調整EndHTMLEndFragmentEndSelection以反映文本長度的變化。 單獨更換是行不通的。

使用正則表達式在某種程度上解決了這個問題:

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 標簽。

由於 HTML 輸入可以是任意的,以下是我建議的步驟:

  1. 假設您有辦法檢測剪貼板內容確實在 HTML 中,請使用您選擇的 C# 庫(例如, this )對其進行整理。 這將允許應用程序處理“清理”的內容,即下面的<br><br />等 HTML 中斷將被整理為標准<br/> ,然后您可以省略或替換它。

  2. 不要像處理 HTML 中斷那樣使用“一次性”正則表達式替換,而是通過預測將來需要替換的有問題的 HTML 元素列表的添加,即使用組(例如, 這個)。 然后,您將能夠為您的表單應用程序的用戶提供一種配置要省略哪些元素的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM