使用IndexOf在字符串之间提取值。怎么了?

时间:2011-11-10 21:02:50

标签: c# substring

我有从网页检索的HTML / CSS。我想从文件中获取值债务

该文件类似于以下内容:

...

<tr>
<td width="10%"><input type="hidden" name="number" value="000115900">
  <input type="hidden" name="debt" value="2.282,00">
  <input type="hidden" name="id" value="01039">
  <input type="hidden" name="idbill" value="129">
...

我想要债务值,在这种情况下:2.282,00

我做了:

int first = responseFromServer.IndexOf("<input type=\"hidden\" name=\"debt\" value=\"");
int last = responseFromServer.IndexOf("\">");
string str2 = responseFromServer.Substring(first + 1, last - first -1);

它不起作用。我得到的值必须是非负或非零。什么是错的?

3 个答案:

答案 0 :(得分:3)

您的last作业应从first开始搜索:

int last = responseFromServer.IndexOf("\">", first); 

在您的代码示例中,last获取字符串中第一个">的索引,因此其值小于firstlast - first - 1为负数号。

答案 1 :(得分:3)

这是因为last可能与字符串中的第一个/>匹配,而不是您要查找的<input之后的第一个{{1}}。您需要在第一个之后开始搜索(IndexOf IIRC中的第二个参数)。

您是否尝试过使用Html Agility Pack来解析HTML?

答案 2 :(得分:1)

string partOne = "<input type=\"hidden\" name=\"debt\" value=\"";
string strX = responseFromServer.SubString ( responseFromServer.IndexOf(partOne) + partOne.Length);
string str2 = strX.SubString ( 0, strX.IndexOf("\">") ); // str2 now contains 2.282,00

如果你需要解析HTML,一个非常有用(和免费)的库是http://htmlagilitypack.codeplex.com/