检查字符串是否包含未定义的字符

时间:2015-02-11 09:37:54

标签: c# c#-4.0

我有一个预先定义的字符串为Follows。

string preDefined="abc"; // or i can use char array in here
string value="ac";
string value1="abw";

我需要一些函数来将值与preDefined进行比较。

 (value.SomefunctionContains(preDefined) 

此功能需要返回

value -> true;
value1 -> false

我知道我不能使用contains()或Any()。所以请帮忙

3 个答案:

答案 0 :(得分:3)

您只是在寻找value是否有任何不在predefined中的角色,所以这应该这样做:

!value.Any(x => !predefined.Contains(x))

或者使用All更清楚:

value.All(predefined.Contains);

答案 1 :(得分:2)

private bool SomeFunction(string preDefined, string str)
{
    foreach (char ch in str)
    {
        if (!preDefined.Contains(ch))
        {
            return false;
        }
    }

    return true;
}

答案 2 :(得分:1)

您可以实现以下方法来获得结果:

private static bool DoesContain(string predefined, string value)
{
    char[] c_pre = predefined.ToCharArray();
    char[] c_val = value.ToCharArray();
    char[] intersection = c_pre.Intersect(c_val).ToArray();
    if (intersection.Length == c_val.Length) {
        return true;
    }
    else {
        return false;
    }
}

请注意,此解决方案是一种通用的实现方式。即使字符的顺序不同,IT也会返回true,除非包含所有字符。