У меня есть следующий фрагмент html:
<p><a href=\"/es-es/Documents/test.txt\"><img class=\"ms-asset-icon ms-rtePosition-4\" src=\"/_layouts/15/images/ictxt.gif\" alt=\"\" />test.txt</a><a href=\"/es-es/Documents/test%20-%20Copy.txt\"><img width=\"16\" height=\"16\" class=\"ms-asset-icon ms-rtePosition-4\" src=\"/_layouts/15/images/ictxt.gif\" alt=\"\" />test - Copy.txt</a><a href=\"/es-es/Documents/test%20-%20Copy%20(2).txt\"><img width=\"16\" height=\"16\" class=\"ms-asset-icon ms-rtePosition-4\" src=\"/_layouts/15/images/ictxt.gif\" alt=\"\" />test - Copy (2).txt</a></p>
Этот html находится в строке. Мне нужно вычеркнуть hrefs из всех ссылок и не знаю, как это сделать.
ПРИМЕЧАНИЕ. Я оставил строку, и поэтому ее не отформатировали на нескольких строках кода...
Попробуй это. Вы можете легко достичь ожидаемого результата с помощью обработки XML.
string s = "<p><a href=\"/es-es/Documents/test.txt\"><img class=\"ms-asset-icon ms-rtePosition-4\" src=\"/_layouts/15/images/ictxt.gif\" alt=\"\" />test.txt</a><a href=\"/es-es/Documents/test%20-%20Copy.txt\"><img width=\"16\" height=\"16\" class=\"ms-asset-icon ms-rtePosition-4\" src=\"/_layouts/15/images/ictxt.gif\" alt=\"\" />test - Copy.txt</a><a href=\"/es-es/Documents/test%20-%20Copy%20(2).txt\"><img width=\"16\" height=\"16\" class=\"ms-asset-icon ms-rtePosition-4\" src=\"/_layouts/15/images/ictxt.gif\" alt=\"\" />test - Copy (2).txt</a></p>";
var xdoc = XDocument.Parse(s);
xdoc.Descendants("a")
.Attributes("href")
.Remove();
Console.WriteLine(xdoc.ToString());
img
являются XHtml, это должно быть хорошо. Если ваш ввод не может быть гарантированно фрагментом XHtml, это не обобщаемый ответ, так как HTML-теги img
не являются самозакрывающимися. (Ни много других).
HtmlAgilityPack - это самый рекомендуемый инструмент для анализа и управления HTML.
Некоторый стартовый код будет выглядеть следующим образом (больше образцов - один поиск):
var htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.LoadHtml(htmlString);
var aNodesWithHref = htmlDoc.DocumentNode.SelectNode("//a[@href]");
можете ли вы просто заменить его на Regex?
string newString = Regex.Replace(oldString, @"<a href[^>]+>", @"");
Вы можете использовать метод AttributeCollection.Remove
YourLink.Attributes.Remove("href");