2016-11-09 12 views
-2

感情分析の否定を処理しているときに、この問題が発生しました。私はコンパイラが現在の "次の"反復をスキップするようにします。どのようにC#でそれを達成することができますか? は、実際に私は条件を適用しています:NEXT反復の「続行」を停止する方法c#

foreach(var line in txtbox.Lines) 
{ 
    //see if line contains not, if yes, see if next line contains positive or negative words, if yes, negate the "rating". 
} 

問題は上記のように、私は「次の行」の格付けを否定していたときに、それが否定されると、再びループが次の反復では「その行」に来てそれは正の単語を計算しています。

例:

行1:GOOD

考えられている-3ので、私の条件[LINE1上の反復]の良い、それはそれを3 [繰り返しでカウントされない:2ではない

ラインline2]最終強度を作る+3 -3 = 0

  1. 「次の」反復をスキップする方法は?
  2. できない場合は、どうすれば問題を処理できますか?私は "次の"行を削除しようとしましたが、動作しません、理由を知らない。
  3. 私はちょうど私がこのようにすることができると思った。私はそれを処理するための他の効率的なテクニックを高く評価します。
+3

'foreach'を' for'に置き換え、必要に応じてループ本体の内側でカウンタをインクリメントします。 –

+0

が不明です。論理の関連する部分が省略されています。マック – dlatikay

答えて

1

ここでは、foreachステートメントで項目をスキップする簡単な方法の1つです。

bool skip_next = false; 
foreach(var line in txtbox.Lines) 
{ 
    if(skip_next) 
    { 
    skip_next = false; 
    continue; 
    } 


    /* whatever "rating calculation" here */ 

    skip_next = /* condition to skip or not the next item */; 
} 

はこれが最善の方法(いなくてもそれを行うにはクリーンコード)であることを主張していないが、あなたの完全なコードを見ることなく、それはそれを

PSを行うための安価な方法です:I避難所」あなたが質問に属していないことを説明していて、ちょうどforeachの次の項目をスキップする方法に答えたので、「評価」の問題全体を理解しようとしました。あなたの要求に応じて、おそらくもっと良い方法があります。

+0

を提供してくださいありがとう、それは動作しているようです。私もbool変数を使用しましたが、この方法ではありません。それは本当に明白でした。 あなたが否定を処理するためのより良い方法を知っているなら、それをあなたの答えに加えてください。 ありがとうございました。 – user2735708

+0

@ user2735708これはあなたの特定のコードに依存します。あなたは 'foreach'ループしか見せていないので、私はforeachループでそうするための簡単なコードを使いました。フルコードを表示すると、よりクリーンな方法が見つかる可能性があります。このソリューションがあなたのために働いた場合は、受け入れられた回答としてマークしてください – Jcl

関連する問題