2012-01-31 56 views
2

我想挑選一個數組中的特定字符串並將它們添加到一個新的數組中,例如我想抓取包含.txt和.rtf的數組中的所有字符串,並將它們添加到一個新的數組中,例如filteredStrings []用C#挑選一個數組的某些字符串

+0

你需要使用正則表達式嗎?簡單地使用String.Contains – 2012-01-31 14:21:46

+0

@SixHouse更新問題 – Mike 2012-01-31 14:22:17

回答

7

你不需要正則表達式的東西很簡單:Contains工作更快,更容易理解:

var filteredStrings = myStrings.Where(s => s.Contains(".txt") || s.Contains(".rtf")).ToArray(); 

如果你堅持使用正則表達式,你可以這樣做:

var regexp = new Regex("[.](txt|rtf)"); 
var filteredStrings = myStrings.Where(s => regexp.IsMatch(s)).ToArray(); 
+0

會簡單很多,然而正則表達式可能更靈活 – mikus 2012-01-31 14:23:33

+1

插件系統會更靈活;直到你需要這種靈活性不會引入負擔。 – tenfour 2012-01-31 14:24:52

+0

由於它們似乎是文件擴展名,因此使用String.EndsWith()方法可能是個好主意。 – Till 2012-01-31 14:25:56

1
myArray.Where(x => Regex.IsMatch(x, @"\.(txt|rtf)$")).ToArray() 
+0

錯誤'System.Array'不包含'Where'的定義並且沒有擴展方法'Where'接受類型'System.Array'的第一個參數可以被發現 – Mike 2012-01-31 14:27:39

+0

@Mike什麼版本的.Net是你使用?如果3.5或更高版本,你只需要添加使用System.Linq到你的文件。如果年齡較大,那麼您是否可以更新到3.5或更高版本? – AlanT 2012-01-31 15:52:09