如何从数组中删除元素?

时间:2016-05-16 18:37:48

标签: c# arrays

我有一个像这样的字符串数组

K = {"书""手册""车"}

我想检查是否有任何字符串包含其他字符串,如果有,我想将其从数组中删除。在数组K的情况下,新数组应该是这样的

K =" {"书""车"}

for (i = 0; i < 10; i++)
            {

                if (keywords.Contains(keywords[i])) { 

                      //I have no idea for this part
                }

            }

2 个答案:

答案 0 :(得分:1)

使用List<>(一种专为编辑而设计的数据结构)可能更有意义,而数组则是固定结构。但是,假设你有一个数组,并且需要最终得到一个修改过的数组,你可以转换:

IEnumerable<string> invalid_words = // ... list of words K cannot contain
string[] K = // .. array of strings you are given
K = K.Where(p => !invalid_words.Contains(p)).ToArray();

答案 1 :(得分:0)

这可能有点&#34;臭&#34;但是当你在迭代中时,尝试修改数组会更好。

这个想法是:保存单词出现的所有索引,然后删除这些单词。这不是最好的解决方案,但它可以帮助您解决问题。我强烈建议你阅读&#34; Lists&#34;因为C#很棒,使用它们比使用数组更容易

K="{"book","car"};
//Never use a number, try to use the .length propertie
List<int> indexes=new List<int>();//using lists is easier than arrays
enter code here
for (i = 0; i < K.length; i++)
        {

            if (keywords.Contains(K[i])) 
            { 
                  //You save the index where the word is
                  indexes.add(i);
            }

        }
//Here you take those indexes and create a new Array
int[] theNewArray=new int[K.length-indexes.Count];
int positionInTheNewArray=0;
    for (i = 0; i < K.length; i++)
        {
         if(!indexes.Contains(i))
             {     theNewArray[positionInTheNewArray]=K[i];
                   positionInTheNewArray++;
             }
        }

}

如果您的数组允许重复的单词以及不允许重复的单词,那么这是合适的。