我有一个像这样的字符串数组
K = {"书""手册""车"}
我想检查是否有任何字符串包含其他字符串,如果有,我想将其从数组中删除。在数组K的情况下,新数组应该是这样的
K =" {"书""车"}
for (i = 0; i < 10; i++)
{
if (keywords.Contains(keywords[i])) {
//I have no idea for this part
}
}
答案 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++;
}
}
}
如果您的数组允许重复的单词以及不允许重复的单词,那么这是合适的。