2008-12-17 84 views

回答

2

或者,如果你想使用C#语言扩展:

var words = (from line in new[] { "one two", "three four five" } 
      from word in line.Split(' ', StringSplitOptions.RemoveEmptyEntries) 
      select word).Count(); 
6

你可以做的SelectMany是:

var stringArray = new[] {"one two", "three four five"}; 
var numWords = stringArray.SelectMany(segment => segment.Split(' ')).Count(); 

SelectMany并将结果序列合并为一个序列,然后将其项目为字符串数组的每一项空白分裂...

+0

+1,但你也可以省略分裂,因为它是空白默认参数。 http://msdn.microsoft.com/en-us/library/b873y76a.aspx – 2008-12-17 00:22:52

+0

是的,我只是为了便于阅读而添加它:) – CMS 2008-12-17 00:24:30

+0

感谢您对SelectMany的提示!真棒提示! – 2008-12-17 00:26:04

5

我想点心是更具可读性:

var list = new string[] { "1", "2", "3 4 5" }; 
var count = list.Sum(words => words.Split().Length); 
1

不是问题的答案(即使用LINQ获取数组中的组合字数),但要添加相关信息,可以使用strings.split和strings.join来执行相同的操作:

C#:

string[] StringArray = { "one two", "three four five" }; 
int NumWords = Strings.Split(Strings.Join(StringArray)).Length; 

Vb.Net:

Dim StringArray() As String = {"one two", "three four five"} 
    Dim NumWords As Integer = Split(Join(StringArray)).Length 
相关问题