c#子串不能找到字符串

时间:2015-05-21 04:36:27

标签: c# substring

我的lotHtmlOriginal.Text

中有这个段落
  <script type="text/javascript" src="jscolor/jscolor.js"></script>

  Click here: <input class="color" value="">

我的问题是,当我创建子串waters71 </strong></p> <p><strong>websitesss.com/sblogin/login.shtml/</strong><br /> <strong>1234213:123123</strong><br /> <strong>213123:12312</strong><br /> <strong>4213:196028</strong><br /> <strong>32131:43423</strong><br /> <strong>4444444:96980507</strong></p> <p><strong>htt 的第二部分时,代码失败,因为substring无法找到它,但当我将其更改为某些内容时,它可以正常工作。

当我改变它时它不起作用......

  • htt
  • tron
  • p
  • </p>

这是我的代码

</strong>

如果不清楚,我会尝试在String St = lotHTMLOriginal.Text; ; String firstPart = "blogin/login.shtml/</strong>"; String lastPart = "</p>"; int pFrom = St.IndexOf(firstPart) + firstPart.Length; int pTo = St.IndexOf(lastPart); String result = St.Substring(pFrom, pTo - pFrom); lotHTML.Text = result; blogin/login.shtml/</strong> 之间取得所有内容

4 个答案:

答案 0 :(得分:2)

看起来你想要找到从之前找到的位置开始的特定字符串,如string.IndexOf

int pTo = St.IndexOf(lastPart, pFrom);

旁注:如果你需要大量的HTML处理,可能更容易使用HTML解析器(如HtmlAgilityPack)而不是使用字符串匹配或正则表达式,但对于简单的一次性代码,子串是可以的。

答案 1 :(得分:0)

此代码将在firstPart开始后找到第一个"</p>"

String lastPart = "</p>";
int pFrom = St.IndexOf(firstPart) + firstPart.Length;
int pTo = 0;
while(pTo - pFrom < 0)
{
    pTo = St.IndexOf(lastPart);
}

答案 2 :(得分:0)

使用int pTo = St.IndexOf(lastPart);您将获得第一个</p>的索引,但您正在寻找最后一个,所以我认为您应该使用

int pTo = St.LastIndexOf(lastPart);

<强>输出:

<br /> <strong>1234213:123123</strong><br /> <strong>213123:12312</strong><br /> <strong>4213:196028</strong><br /> <strong>32131:43423</strong><br /> <strong>4444444:96980507</strong>

答案 3 :(得分:0)

我相信这会修复代码中的错误。我已经添加了一个新变量。如果这有意义/有帮助,请告诉我。

    String St = lotHTMLOriginal.Text; ;
    String firstPart = "blogin/login.shtml/</strong>";
    String lastPart = "</p>";
    int pFrom = St.IndexOf(firstPart) + firstPart.Length;

    // these three lines changed
    string St_temp = St.Substring(pFrom);
    int pTo = St_temp.IndexOf(lastPart);
    String result = St.Substring(pFrom, pTo);

    lotHTML.Text = result;

我最终做的是在firstPart中修剪St之前的字符以稍微简化代码。它限制了你需要做的算术来获得你想要的结果。

// this is the result
<br />
<strong>1234213:123123</strong><br />
<strong>213123:12312</strong><br />
<strong>4213:196028</strong><br />
<strong>32131:43423</strong><br />
<strong>4444444:96980507</strong>