如何从a点开始到B点结束的大字符串中选择一个部分
本文关键字:选择 一个 字符串 开始 结束 | 更新日期: 2023-09-27 18:15:53
我的字符串是:
[...]
<div class="threads">
<a href="/adgagshsdh_t_54654321654" title="Title 2">
<a href="/adgagsdfdfhsdh_t_44654321654" title="Title 3">
<a href="/adgagsdfhsdh_t_54321654" title="Title 4">
<a href="/adgagsdfhsdfhsdh_t_14654321654" title="Title 5">
[...etc]
</div>
[...]
我想把除了_t_54654321654之外的所有内容都去掉,然后在那之后除了54654321654。
最终字符串应该像这样
54654321654
我尝试了 indexOf
,但没有真正工作。
我试着搜索,但我不知道如何准确地描述我要做什么
string whatYouNeed = "/adgadgdfhdsdfgsadfgdsg_t_54654321654".Split('_').Last();
或
string whatYouNeed = "<a href='"/adgadgdfhdsdfgsadfgdsg_t_54654321654'" title='"Title'">"
.Split('_')
.Last()
.Split(new string[] {"'""},StringSplitOptions.RemoveEmptyEntries)
.First();
但是如果你想处理HTML内容,你最好使用Html Agility Pack
检查这个问题,其中一些类似于这个,并使用html敏捷包
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.Load("test.html");
var link = htmlDoc.DocumentNode
.Descendants("a")
.First(); // assume it is First link tag what you need
string hrefValue = link.Attributes["href"].Value;
string whatYouNeed = hrefValue.Split('_').Last();
回复您的评论
,但是如果我把源代码放在字符串中,而不是在test.html文件吗?
你可以像下面这样加载html
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
也有几十个不同数字的
"<a href"'s
源代码,我不需要一个具体的,只要其中一个。
var links = htmlDoc.DocumentNode
.Descendants("a").ToList();
上面的将返回页面中的所有链接,您可以获得任何您想要的项目,如links[1]
或links[3]
等…
试试子字符串方法
string sub = mainString.Substring(startPosition, endPosition);
尝试:
Regex rgx = new Regex("^.+?_t_([^'"]+?)'".+?$");
string result = rgx.Replace(yourString, "$1");
解释:它从字符串的开头使用^
匹配字符并移动到_t_
,然后在$1
中进行子匹配直到"
,然后"
,然后直到结束$
。
整个字符串被替换为子匹配$1
试试这个:
int index = s.LastIndexOf('_') + 1;
string t = s.Substring(index, s.Length - index);