2011-11-10 8 views
1

私はページから取得するHTML/CSSを持っています。私は値負債をファイルから入手したいと思います。IndexOfを使用して文字列間の値を抽出します。なにが問題ですか?

ファイルは、以下のようなものです:

... 

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

そして、それ動かない。私は値が負でないかゼロでないことが必要です。何が間違っていますか?

+1

である私は少しオフトピックであることについて申し訳ありませんが、しかし、あなたはに正規表現を使用して検討していますこれをやる? – Chris

+2

@Chris、** [HE COMES](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454)**。 –

+0

oh神........神 – Kani

答えて

3

あなたlast割り当てはfirstから検索を開始する必要があります:あなたのコードサンプルで

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

lastは、文字列の最初の">のインデックスを取得しているので、その値がfirstよりも小さく、last - first - 1があります負の数です。

3

lastは、おそらく最初の/>と一致している可能性があります。<inputの文字列の最初のものではありません。最初に検索を開始する必要があります(IndexOf IIRCの2番目のパラメータ)。

Html Agility PackをHTMLの解析に使用してみましたか?

1

あなたがHTMLに非常に便利な(そして無料)ライブラリを解析する必要がある場合は

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 

を試みるがhttp://htmlagilitypack.codeplex.com/

+0

私はこれを** str2で取得していますhttp://mywebpage/info.php "method =" POST "HTMLページの2行目の一部である – Kani

+0

@ Kaniの場合、' responseFromServer.IndexOf(partOne) 'の結果は< 0これは 'partOne'が' responseFromServer'に存在しないことを意味しています...これは例えば文字列の途中で何らかの追加の "空白"が存在する場合などです。ライブラリ(私の答えのリンクを参照してください)。 – Yahia

+0

@ Yahia:です-1 – Kani

関連する問題