我有一个字符串就像这样
orem ipsum dolor sit amet, consectetur adipiscing elit. Fusce rutrum, neque eu
varius placerat, <p class="how-pkg"> leo diam viverra velit, </p> a commodo
nibh metus nec orci. Nulla pharetra ut augue quis blandit.
我想删除一个位于此<p class="how-pkg"> ------ </p>
有没有办法直接完成这项任务?
没有多次拆分字符串。
预期结果:leo diam viverra velit,
答案 0 :(得分:4)
使用html敏捷包并编写
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(yourText);
var text = doc.DocumentNode.SelectNodes("/p[@class='how-pkg']").InnerText;
答案 1 :(得分:2)
仅使用字符串操作。
var searchForStart = "<p class=\"how-pkg\">";
int startIndex = input.IndexOf(searchForStart ) + searchFor.Length;
var searchForStop = "</p>";
int stopIndex = input.IndexIf(searchForStop, startIndex);
var output = text.Substring(startIndex, stopIndex - startIndex);
答案 2 :(得分:1)
假设source是你的字符串:
var start = "<p class=\"how-pkg\">";
var p0 = source.IndexOf(start);
var p1 = source.IndexOf("</p>");
var s = source.Substring(p0 + start.Length, p1 - p0);
像这样的东西
答案 3 :(得分:1)
string s = "orem ipsum dolor sit amet, consectetur adipiscing elit. Fusce rutrum, neque eu varius placerat, <p class=\"how-pkg\"> leo diam viverra velit, </p> a commodo nibh metus nec orci. Nulla pharetra ut augue quis blandit.";
int start = s.IndexOf("<p class=\"how-pkg\">") + 20;
int end = s.IndexOf("</p>", start);
string result = s.Substring(start, end - start);
答案 4 :(得分:1)
如果您的标记结构总是相同,那么您可以使用正则表达式来提取这样的值:
var result = Regex.Match("<p class="how-pkg">hello</p>", "(?<=<p class="how-pkg">).*(?=</p>)").Value;
如果您的标记结构发生变化,那么您可以使用命名组捕获标记和值,如下所示:
<(?<tag>\.*)>(?<text>.*)</\k<tag>>
仅从hello
<one>hello</one>
值
(?<=<.*>).*(?=</\w*>)
例如
var result = Regex.Match("<p class="how-pkg">hello</p>", "(?<=<.*>).*(?=</\w*>)").Value;
答案 5 :(得分:1)
最简单的方法:
<p
(或<p class
)>
- 您找到了一个标记(忽略了指定的类)和开放点</p>
- 您找到了结果以及继续搜索的点(如有必要)。