如何从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 ,但没有真正工作。

我试着搜索,但我不知道如何准确地描述我要做什么

如何从a点开始到B点结束的大字符串中选择一个部分

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);