Как вернуть все слова, которые начинаются и заканчиваются определенными символами? - PullRequest
0 голосов
/ 10 августа 2011

Извините .. Я задал очень похожий вопрос ранее .. Однако на этот раз я хочу получить все слова, заканчивающиеся определенными символами

У меня есть список слов следующим образом

        List<string> words = new List<string>();
        words.Add("abet");
        words.Add("abbots"); //<---Return this
        words.Add("abrupt");
        words.Add("abduct");
        words.Add("abnats"); //<--return this.
        words.Add("acmatic");


        //Now return all words of 6 letters that begin with letter "a" and has "ts" as the 5th and 6th letter   
        //the result should return the words "abbots" and "abnats"
        var result = from w in words
                     where w.Length == 6 && w.StartsWith("a") && //????

Ответы [ 6 ]

2 голосов
/ 10 августа 2011

Я не скомпилировал и не протестировал это, но оно должно работать.

var result = from w in words
                     where w.Length == 6 && w.StartsWith("a") && w.EndsWith("ts")
1 голос
/ 10 августа 2011

Используйте EndsWith для проверки символов в конце.

var result = from w in words
                     where w.Length == 6 && w.StartsWith("a") && w.EndsWith("ts")

Используйте IndexOf для проверки слов, начинающихся с определенной позиции (вваш случай, начиная с 5-го):

  var result = from w in words
                     where w.Length == 6 && w.StartsWith("a") && (w.Length > 5 && w.IndexOf("ts", 4))
0 голосов
/ 10 августа 2011

Вы можете попробовать немного регулярных выражений, если вы чувствуете, что можете:

string pattern = @"^(a[a-zA-Z]*a)$";
var result = from w in words
where w.Length == 6 && System.Text.RegularExpressions.Regex.IsMatch(w, pattern) select w;

Это должно соответствовать чему-либо, начиная с 'a' и заканчивая 'a'.

0 голосов
/ 10 августа 2011

Regex - ваш друг здесь:

Regex regEx = new Regex("^a[A-Za-z]*ts$");
var results = from w in words where regEx.Match(w).Success select w;

Также обратите внимание, что при использовании синтаксиса понимания запросов LINQ вам понадобится select в конце его (даже если это просто оригинал from переменная.)

0 голосов
/ 10 августа 2011

Вы сможете использовать функцию EndsWith():

Использование:

var test=   FROM w in words
           WHERE w.Length == 6
              && w.StartsWith("a")
              && w.EndsWith("ts");

Альтеративно:

var test = words.Where(w =>w.Length==6 && w.StartsWith("a") && w.EndsWith("ts"));
0 голосов
/ 10 августа 2011

Просто используйте .EndsWith () для суффиксов.

var results = from w in words where w.Length == 6 
    && w.StartsWith("a") 
    && w.EndsWith("ts");
...