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

时间:2013-05-29 04:20:03

标签: c# regex string select

我的字符串是:

[...]
<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 ,但没有真正奏效。

我尝试过搜索,但我不知道如何描述我想要做的事情。

4 个答案:

答案 0 :(得分:4)

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

Check this question which some what similar to this and by using html agility pack

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]等等。

答案 1 :(得分:0)

通过子字符串方法

尝试

喜欢

string sub = mainString.Substring(startPosition, endPosition);

答案 2 :(得分:0)

尝试:

  Regex rgx = new Regex("^.+?_t_([^\"]+?)\".+?$");
  string result = rgx.Replace(yourString, "$1");

说明:它使用^匹配字符串开头的字符,然后移至_t_,然后在$1中进行子匹配,直至"然后{{ 1}}然后直到结束"

整个字符串由子匹配$替换。

答案 3 :(得分:0)

试试这个:

        int index = s.LastIndexOf('_') + 1;
        string t = s.Substring(index, s.Length - index);