2016-11-09 69 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:NOT

線2:GOOD

被認爲是-3的,因爲我的條件[上一號線迭代]不好的,它計算它+3 [迭代上line2]使最終強度+3 -3 = 0

  1. 如何跳過「下一個」迭代?
  2. 如果不行,我該如何處理這個問題?我試過刪除「下一行」,但不起作用,不知道爲什麼。
  3. 我只是覺得我可以這樣做。我會高度讚賞任何其他有效的技術來處理它。
+3

將'foreach'替換爲'for',並在循環體內部需要時遞增計數器。 –

+0

不清楚。相關部分的邏輯省略。請提供mcve – dlatikay

回答

1

這裏是在foreach語句跳過一個項目一個簡單的方法。

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一種廉價的方式:我的天堂」甚至試圖理解整個「評級」問題,因爲你正在解釋不屬於該問題的事情,並且只是回答了跳過foreach中下一項的方法。根據您的要求,可能有更好的方法來完成它。

+0

謝謝,看來工作。我也用過bool變量,但沒有這種方式。這真的很明顯。 如果你知道任何更好的方式來處理否定,然後將其添加到你的答案。 再次感謝。 – user2735708

+0

@ user2735708它取決於您的特定代碼...因爲您只展示了一個'foreach'循環,所以我在foreach循環中使用了一些簡單的代碼。如果您顯示完整的代碼,可能會找到更清晰的方法。如果此解決方案適合您,請將其標記爲接受的答案 – Jcl