Убрать путь из ссылок на css файлы - C#
Формулировка задачи:
необходимо найти ссылки на .css файлы и заменить их ТОЛЬКО на название самого файла.
например: было dsfs/hfhf/12w.css - стало только 12w.css
ссылки находим (Regex.Matches), обрабатываем в цикле (foreach (Match m in matches)), название файла узнаём.
как сделать, чтобы именно для этой ссылки, именно её название?
Regex.Replace пробовал, и в цикл foreach ставил (меняет только для последней ссылки. если их на странице 5, то первых 4 без изменений) и из цикла выносил (меняет все ссылки, но на последнее имя. изменены 5 ссылок, но все с одинаковым именем, как у 5).
думал как-то через List, но фантазия закончилась.
Решение задачи: «Убрать путь из ссылок на css файлы»
textual
Листинг программы
Uri rootUri = new Uri("http://example.com");
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.OptionAutoCloseOnEnd = true;
htmlDoc.LoadHtml(html);
foreach (var linkElement in htmlDoc.DocumentNode.SelectNodes("//link[@rel='stylesheet']"))
{
string href = linkElement.GetAttributeValue("href", "");
if (string.IsNullOrEmpty(href)) continue;
Uri cssUri = new Uri(href, UriKind.RelativeOrAbsolute);
if (!cssUri.IsAbsoluteUri)
{
cssUri = new Uri(rootUri, cssUri);
}
href = Path.GetFileName(cssUri.GetComponents(UriComponents.Path, UriFormat.Unescaped));
if (href.EndsWith(".css", StringComparison.OrdinalIgnoreCase))
{
linkElement.SetAttributeValue("href", href);
}
}