2010-06-29 6 views
4
string[] words = {"januar", "februar", "marec", "april", "maj", "junij", "julij",  
"avgust", "september", "oktober", "november", "december"}; 

У меня есть слово «ja», например, или «dec». Как я могу получить «januar» или «декабрь» из массива строк? Быстрое решение?поиск внутри массива строк

Thx

ответ

3

Если вы используете новые версии C# (3.0 и выше), вы можете использовать LINQ:

// to find a match anywhere in the word 
words.Where(w => w.IndexOf(str, 
    StringComparison.InvariantCultureIgnoreCase) >= 0); 

// to find a match at the beginning only 
words.Where(w => w.StartsWith(str, 
    StringComparison.InvariantCultureIgnoreCase)); 
+2

'StringComparison' существует по причине. **Используй это**! 'İ i I ı' – SLaks

+0

@SLaks - Уже обновляется. –

+0

@Slaks - Обновлен для использования IndexOf вместо Contains, поскольку Contains не имеет перегрузки, которая принимает StringComparison. Есть ли способ лучше? –

5

Вы можете использовать LINQ:

words.FirstOrDefault(w => w.StartsWith(str, StringComparison.OrdinalIgnoreCase)) 

Если не соответствовало, это вернет null.

0
List<string> words = new List<string>() { "January", "February", "March", "April" }; 

var result = words.Where(w => w.StartsWith("jan", StringComparison.OrdinalIgnoreCase)); 

Найдет результаты, которые начинаются с любыми критериями, которые вы предоставляете, и игнорировать регистр (необязательно.)

0

Вы можете использовать простые регулярные выражения, а также ... строки [] слова = { " «junuar», «februar», «marec», «april», «maj», «junij», «julij», «avgust», «сентябрь», «октябрь», «ноябрь», «декабрь» };

string sPattern = "ja"; 

    foreach (string s in words) 
    { 


     if (System.Text.RegularExpressions.Regex.IsMatch(s, sPattern, System.Text.RegularExpressions.RegexOptions.IgnoreCase)) 
     { 
      System.Console.WriteLine(" (match for '{0}' found)", sPattern); 
     } 

    } 
+2

Выполнение этого с помощью регулярного выражения подобно использованию бензопилы для нарезки яблока. – SLaks

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