2011-08-10 4 views
4

次のように私は単語のリストを持っている:特定の文字で始まり、終わるすべての単語を返すにはどうすればいいですか?

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"); 

私は文字「A」で始まる6つの文字のすべての単語を返したいと結果は言葉を返すべき第五文字として「t」を持っていると思います"修道院長官"と "異常者"。

var result = from w in words 
      where w.StartsWith("a") && //where ???? 

何句、私は第五文字である「T」の要件を満たすために追加する必要がありますか?これは小さな言葉の例外がスローされます、Lengthチェックなしで

where w.StartsWith("a") && w.Length > 5 && w[4] == 't' 

+0

は...しかし、私は少し私の質問を変更したいあなたの答えをありがとう、私は5番目と6番目の文字は「TS」であるすべての単語を返すようにしたいですか? – Fraiser

答えて

7
var result = from w in words 
      where w.Length == 6 && w.StartsWith("a") && w[4] == 't' 
      select w; 
1

あなたがインデクサーを使用することができます。

インデクサーはゼロベースであることに注意してください。

1
// Now return all words of 6 letters that begin with letter "a" and has "t" as 
// the 5th letter. The result should return the words "abbots" and "abnats". 

var result = words.Where(w => 
    // begin with letter 'a' 
    w.StartsWith("a") && 
    // words of 6 letters 
    (w.Length == 6) && 
    // 't' as the 5th letter 
    w[4].Equals('t')); 
1

私は、次のコードをテストしているし、それが正しい結果を与えた:あなたの改訂質問への答えで

var result = from w in words 
      where w.StartsWith("a") && w.Length == 6 && w.Substring(4, 1) == "t" 
      select w; 
1

を使用すると、最後の2つの文字を確認したい場合は、あなたがENDWITHメソッドを使用することができます確認したいインデックスを指定してください。 SLaksが指摘しているように、インデックスを使用する場合、長さをチェックして、より小さな単語が問題を起こさないようにする必要があります。

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"); 

var result1 = from word in words 
       where word.Length == 6 && word.StartsWith("a") && word.EndsWith("ts") 
       select word; 

var result2 = from word in words 
       where word.Length == 6 && word.StartsWith("a") && word[4] == 't' && word[5] == 's' 
       select word; 
関連する問題