【发布时间】:2020-07-21 20:42:12
【问题描述】:
我有一个包含多个 Paragraphs 的 Microsoft Word 文档,我必须将其中一个段落中的纯 URL 替换为实际上可以单击的 Hyperlink。
整个链接以前是已知的,我只需要找到包含它的段落,然后用真实链接替换该文本(HTML 不起作用)。
// this is how I determine the positions in the text of the paragraph
var urlStartIndex = paragraphRange.Text.IndexOf(linkUrl);
var urlEndIndex = urlStartIndex + linkUrl.Length;
但我无法用链接仅替换 Paragraph.Text 的一部分。
段落中的示例文本是这样的
Click the following link: https://www.somewhereinthe.net/something/somethingmore
仅以https 开头的部分应完全替换为真实链接以使其成为现实
Click the following link: somewhere
一开始我尝试直接插入而不是url,但是简单的去掉url并粘贴链接显然不是很容易做到的。
以下尝试将整个段落替换为可单击但未突出显示的链接(蓝色和带下划线的字体),但其TextToDisplay 也与Address 一样,因此在网络上无处可寻:
private static void ReplacePaypalLinkIn(Word.Paragraph paragraph, Word.Document docx, string linkUrl)
{
var paragraphRange = paragraph.Range;
// find the start index of the url
var urlStartIndex = paragraphRange.Text.IndexOf(linkUrl);
// calculate the last index of the url
var urlEndIndex = urlStartIndex + linkUrl.Length;
// and add it to the hyperlinks of the document at this very paragraph (Anchor)
var link = docx.Hyperlinks.Add(Anchor: paragraphRange, Address: linkUrl, TextToDisplay: "somewhere");
}
如何替换该 URL 以实际生成 Paragraph,其中包含 URL 之前的文本,而不是 URL,而是由给定的 TextToDisplay 替换的可点击且格式正确的链接?
【问题讨论】:
标签: c# url hyperlink ms-word office-interop