2015-02-11 6 views
-2

У меня есть предварительно определенная строка, как указано далее.Проверьте, не содержит ли строка строки не указанные символы

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 

Я знал, что я не могу использовать содержит() или Any(). так плз помочь

+5

Кажется, это не проблема. Вы попробовали _anything_ решить его? Вы можете проверить каждый символ и проверить, что исходная строка имеет этот символ или нет? Для проверки их, например, есть метод LINQ. –

ответ

2

Вы просто ищете, если value имеет какой-либо символ, который не в predefined, так что это должно сделать это:

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

Или это более ясно, с помощью All:

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

    return true; 
} 
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, даже если символы не находятся в одном порядке, если только они не включают все.

Смежные вопросы