我有一个字符串数组,
string[] numbers= {"one","two","last"}
我有另一个字符串数组
string[] variables={"string one","int two","string three"}
如何获取具有variables
数组元素的numbers
数组元素。
因此,我必须得到"string one","int two"
元素。
我必须从variables
数组中删除这些元素,并将其余元素存储在新数组中。所以我的新数组应该是,
string[] newarray={"string three"}
我使用了以下代码。但无法得到确切的结果。
foreach (string variable in variables)
{
if(!variable .Contains(numbers.Any())
{
newarray.add(param);
}
}
先谢谢。
答案 0 :(得分:2)
string[] numbers= {"one","two","last"};
string[] variables={"string one","int two","string three"};
string [] variablesWithNumbers = variables.Where(t=>numbers
.Any(u=>t.Contains(u))).ToArray();
string[] newarray = variables.Where(t=>!numbers
.Any(u=>t.Contains(u))).ToArray();
这是带有print的csharpad中的代码 http://csharppad.com/gist/989bbe7e439990bc1f993f46d3e64fe8
答案 1 :(得分:1)
你可以这样做:
var result = variables.Where(v=>v.Split(' ').Any(s=>numbers.Contains(s)));
答案 2 :(得分:1)
你可以尝试这个:
var newarray = variables.Where(v => !numbers.Any(n => v.IndexOf(n) >= 0).ToArray()
答案 3 :(得分:1)
Linq为您提供了很多方法...您可以遵循的另一条路径:
var itemsToDiscard = variables.Zip(numbers, (f, s) => !f.Contains(s)).ToArray();
var newArray = variables.Where((_, i) => itemsToDiscard[i]).ToArray();
请注意,您的问题未得到详细说明。位置有意义吗?以下是否应该找到任何匹配?
{"zero", "one", "two"}
{"string one","int two","string three"}
我提出的解决方案并非如此,但如果您希望解决这个问题,那么它还远未明确。如果顺序不重要,则等效代码为:
var itemsToDiscard = numbers.Select(n => variables.All(s => !s.Contains(n))).ToArray();
var resultWithoutPosition = variables.Where((_, i) => itemsToDiscard[i]).ToArray();
答案 4 :(得分:1)
string[] numbers = { "one", "two", "last" };
string[] variables = { "string one", "int two", "string three" };
string[] newarray = variables.Where(v => !numbers.Any(n => v.Contains(n))).ToArray();
variables = variables.Where(v => numbers.Any(n => v.Contains(n))).ToArray();
答案 5 :(得分:0)
试试这个
var result = variables.Except(variables.Intersect(numbers, new ContainsComparer())).ToArray();
有了这个
private class ContainsComparer : IEqualityComparer<string> {
public bool Equals(string x, string y) => y.Contains(x);
public int GetHashCode(string obj) => 0;
}