我有从网页检索的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);
它不起作用。我得到的值必须是非负或非零。什么是错的?
答案 0 :(得分:3)
您的last
作业应从first
开始搜索:
int last = responseFromServer.IndexOf("\">", first);
在您的代码示例中,last
获取字符串中第一个">
的索引,因此其值小于first
,last - 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/