2011-08-10 88 views
0

對不起..我問了一個非常類似的問題早。但是這一次,我希望檢索某些字符結尾的單詞如何返回以某些字符開頭和結尾的所有單詞?

我有一個單詞列表如下

 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") && //???? 

回答

2

我的天堂沒有編譯和測試這個,但它應該工作。

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

使用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

只需使用.EndsWith()爲後綴。

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

您可以使用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

一個正則表達式是你的朋友在這裏:

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

你可以嘗試了一下正則表達式如果你覺得它:

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; 

這應該匹配任何開始於'一',結束於'一個'。

相關問題