2016-09-18 4 views
0

私はC#に慣れるためのツールを作っていますが、基本的にツールはウェブサイトの情報を表示しますが、面白い統計を追加します。文字列を通過するときにIndexOutOfRangeExceptionが発生する

私は2つのタグ間でデータを取得する部分にあります。 私はそれを行うために正規表現と他のライブラリを使ってみましたが、結局私は自分のアルゴリズムを使ってデータを取得し始めました。

私はCアルゴリズムに慣れていますので、ループが存在するかどうかチェックしました。ここで

while (tag1 < result.Length) 
{ 
    if (result[tag1] == 'h' && result[tag1 + 1] == 'r' && result[tag1 + 2] == 'e' && result[tag1 + 3] == 'f') 
    { 
     List<char>temp = new List<char>(); 
     tag1 += 4; 
     while (result[tag1] != '>') 
      tag1++; 
     tag1++; 
     this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate() 
     { 
      richtextbox1.AppendText(Environment.NewLine + result[tag1 + 7]); 
     }); 
     while (result[tag1] != '<') 
     { 
      //this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate() 
      //{ 
      // richtextbox1.AppendText(Environment.NewLine + result[tag1]); 
      //}); 
      temp.Add(result[tag1]); 
      tag1++; 
     } 
     string s = string.Join(",", temp.ToArray()); 
     this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate() 
     { 
      richtextbox1.AppendText(Environment.NewLine + temp); 
     }); 
    } 
    tag1++; 
} 

は私が List<char>

マイ指数」で「サムスン」を格納したいという例では、「ニックネーム」

<td class="ak-rank"><span class="ak-icon-position">107235</span></td>     <td class="ak-name"><span class="ak-breed-icon breed12_1"></span><a href="http://www.dofus.com/fr/mmorpg/communaute/annuaires/pages-persos/747884800030-samsung">Samsung</a></td>     <td class="ak-class">Pandawa</td>     <td>200</td>     <td>Many</td>     <td class="ak-xp-24h">2 884 302 154</td>     <td class="ak-xp-total">6 027 524 190</td> 

をつかむしたい例のHTMLラインであります「tag1」はwhile (result[tag1] != '<')ループに入る前に正しい位置にあります。そして、それは "<"文字が見えたら停止するはずです。

コードにデバッグを残しましたが、result[tag + 7]に "<"があることが確認されていますが、実行するとIndexOutOfRangeExceptionと表示されます。

読んでいただきありがとうございます。私が明確でない場合は、お気軽にご質問ください。

+0

while(tag1 < result.Length) 

:あなたは再考えるあなたは、ロジックまたは変更する必要がありますか? –

答えて

0

サンプルコードでは、tag1はWHILEループの結果の全長になりますが、ループ内ではtag1 + 7が使用されます。 tag1がresult.Lengthの7以内になると、tag1 + 7がresult.Lengthより大きいため、outOfRangeExceptionが発生します。 HtmlAgilityPackを使用して、あなたの人生を容易にしないのはなぜ

(tag1 < result.Length-7) 
関連する問題