Word управляет гиперссылками через поля HYPERLINK . Поля - это то, что Word использует для работы с динамическим контентом c. Некоторыми примерами, помимо гиперссылок, являются номера страниц, даты, перекрестные ссылки - все, что может изменить или вызвать действие.
Итак, что здесь должно произойти, это 1) найти URL и 2) заменить его на гиперссылка.
Обычно целесообразно использовать функцию Word Find
, чтобы найти указанную строку c в тексте. (Метод, проиллюстрированный кодом в вопросе, основан на расположении индекса строки в документе. К сожалению, этот подход вовсе не надежен, так как документ Word имеет тенденцию скрывать «скрытые символы»: control символы, которые не видны, но изменяют значения местоположения индекса содержимого документа.)
В следующем фрагменте кода показано, как использовать Find
, чтобы найти строку URL в документе и вставить гиперссылку (поле) вместо этого, используя метод Hyperlinks.Add
:
string targetUrl = @"https://www.somewhereinthe.net/something/somethingmore";
string displayText = "somewhere";
Word.Range rngUrl = doc.Content;
Word.Find fd = rngUrl.Find;
fd.Text = targetUrl;
bool success = fd.Execute();
if (success)
{
doc.Hyperlinks.Add(rngUrl, targetUrl, Type.Missing, Type.Missing, displayText, Type.Missing);
}
Какие различные свойства доступны для Find
, можно найти в справочнике по языку Word. Это хорошая идея, чтобы понять, что все может быть вовлечено, когда Execute
работает. То, что здесь показано, сводится к тому, что необходимо для демонстрации принципа базового c.
Сразу же важно знать, что Range
, на котором выполняется поиск, переключится на термин "найденный". Итак, rngUrl
начинается с охвата тела документа, но при поиске URL-адреса он сводится к URL-адресу. Таким образом, гиперссылка заменит URL.