C#里. 数组a 和数组b 只要a的元素出现在b里.就删掉这个元素

string[] strs = { "aa", "bb", "cc", "dd", "ee", "dd", "ee" };
string[] strs2 = { "aa", "aa", "cc","ee" };
谢谢
Except 的不行.. 删掉后.strs 本身也去重复. 两个dd只有一个了
s529586 的不对.. 后面有很多ee
381914029 的 string没有removeat方法

string[] strs = { "aa", "bb", "cc", "dd", "ee", "dd", "ee" };
string[] strs2 = { "aa", "aa", "cc", "ee" };
foreach (string a in strs2)
{
for (int i = strs.Length - 1; i >= 0; i--)
{
if (strs[i] == a)
{
// 因为数组不支持删除元素,因此创建新数组,从旧数组复制元素
string[] tmp = new string[strs.Length - 1];
for (int j = 0; j < tmp.Length; j++)
{
if (j < i)
tmp[j] = strs[j];
else
tmp[j] = strs[j+1];
}
strs = tmp;
}
}
}
// strs就是删除了strs2后,剩下的数组
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-25
Except不行,我换了一个做法

string[] strs = { "aa", "bb", "cc", "dd", "ee", "dd", "ee" };
string[] strs2 = { "aa", "aa", "cc", "ee" };
strs = strs.Where(str => !strs2.Contains(str)).ToArray();本回答被提问者采纳
第2个回答  2011-01-25
for(int i=0;i<str.length;i++)
{
for(int j = 0;j<str2.length;j++)
{
if(strs[i]==str[j])
{
strs.removeat(i);
i--;
}
}

}
第3个回答  2011-01-25
for(int i =0; i<strs.length; i++)
{
string str=strs[i];
for(int k =0; k<strs2.length; k++)
{
string str2=strs2[k];
if(str.Equals(str2))
{
for(int m =i;m<strs.length-1; m++)
{
strs[m]=strs[m+1];
}
}
}
}
相似回答