这是现在的方法:
private void WordsFilter(List<string> newText)
{
for (int i = 0; i < newText.Count; i++)
{
for (int x = 0; x < WordsList.words.Length; x++)
{
lineToPost = ScrollLabel._lines[i];
if (!lineToPost.Contains(WordsList.words[x]))
{
newText.Remove(lineToPost);
}
}
}
}
newText是List,WorldsList.words是string []
我循环遍历newText中的行并循环显示单词,我想以这种方式检查:
newText中的第一行循环遍历所有单词,如果此行中没有任何单词,则删除当前行和后一行。 例如,在newText中,如果索引0中的行是:Hello everyone 索引1中的行是:创建于2002年12月3日 然后删除索引0和索引1
索引2是空的,就像空格一样,所以不要删除它。
然后索引3循环遍历所有单词,如果单词的nonoe在索引3中排成一行,则删除索引3和索引4.
等等......
我该怎么做?
答案 0 :(得分:0)
Here a working example。我试图改变代码的逻辑:
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
List<string> list = new List<string>() {"truc", "I love toto", "next", "chocolate", "tata tata", "", "something"};
WordsFilter(list);
}
private static void WordsFilter(List<string> newText)
{
string[] WordsList = new string[] { "toto", "tata" };
for (int i = 0; i < newText.Count; i++)
{
for (int x = 0; x < WordsList.Length; x++)
{
if (newText[i].Contains(WordsList[x]))
{
newText.RemoveAt(i);
if (i + 1 < newText.Count)
newText.RemoveAt(i);
}
}
}
// print
foreach(var item in newText)
{
Console.WriteLine(item);
}
}
}
您应该检查foreach
loop和LINQ的工作原理。