比较字符串中的字符是否是 C# 中第二个字符串的子集

本文关键字:字符串 第二个 子集 字符 比较 是否是 | 更新日期: 2023-09-27 17:56:05

我正在开发一个游戏,我想检查一个字符串的字符是否包含在另一个字符串中。显然,一组将是我的首选,但我想考虑重复项。例如:

"met".IsContainedWithin("meet"); => true
"meet".IsContainedWithin("met"); => false

多集会很好,但听起来 C# 没有这样的东西。我可以迭代地执行此操作,但我想知道是否有更简单的方法(也许使用 LINQ)。谢谢!

编辑:

我不太清楚。我希望它返回 true,无论字母的顺序如何:

 "git".IsContainedWithin("light")=> true
 "pall".IsContainedWithin("lamp")=> false

比较字符串中的字符是否是 C# 中第二个字符串的子集

这对

我有用:

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