比较字符串中的字符是否是 C# 中第二个字符串的子集
Compare if the characters in a string are a subset of a second string in C#
我正在开发一个游戏,我想检查一个字符串的字符是否包含在另一个字符串中。显然,一套是我的第一选择,但我想考虑重复项。例如:
"met".IsContainedWithin("meet"); => true
"meet".IsContainedWithin("met"); => false
多集会很好,但听起来 C# 没有类似的东西。我可以迭代地做,但我想知道是否有更简单的方法(也许使用 LINQ)。谢谢!
编辑:
我不是很清楚。无论字母的顺序如何,我都希望它 return 为真:
"git".IsContainedWithin("light")=> true
"pall".IsContainedWithin("lamp")=> false
这对我有用:
public static bool IsContainedWithin(this string @this, string container)
{
var lookup = container.ToLookup(c => c);
return @this.ToLookup(c => c).All(c => lookup[c.Key].Count() >= c.Count());
}
我是这样测试的:
var tests = new []
{
"met".IsContainedWithin("meet"),
"meet".IsContainedWithin("met"),
"git".IsContainedWithin("light"),
"pall".IsContainedWithin("lamp"),
};
我得到了这些结果:
True
False
True
False
我正在开发一个游戏,我想检查一个字符串的字符是否包含在另一个字符串中。显然,一套是我的第一选择,但我想考虑重复项。例如:
"met".IsContainedWithin("meet"); => true
"meet".IsContainedWithin("met"); => false
多集会很好,但听起来 C# 没有类似的东西。我可以迭代地做,但我想知道是否有更简单的方法(也许使用 LINQ)。谢谢!
编辑:
我不是很清楚。无论字母的顺序如何,我都希望它 return 为真:
"git".IsContainedWithin("light")=> true
"pall".IsContainedWithin("lamp")=> false
这对我有用:
public static bool IsContainedWithin(this string @this, string container)
{
var lookup = container.ToLookup(c => c);
return @this.ToLookup(c => c).All(c => lookup[c.Key].Count() >= c.Count());
}
我是这样测试的:
var tests = new []
{
"met".IsContainedWithin("meet"),
"meet".IsContainedWithin("met"),
"git".IsContainedWithin("light"),
"pall".IsContainedWithin("lamp"),
};
我得到了这些结果:
True
False
True
False