2

例如,我有一个文本文件,我已将它放入一个数组中,然后我使用以下命令将该数组按句号拆分(因此每个句子都在新数组的自己的索引中):

textSplitArray = textArray[j].Split('.');

然后我将如何计算 textSplitArray 的每个索引中的单词数以确定哪个句子的单词最多?有可能做到这一点还是我必须以另一种方式做到这一点?

我试过到处搜索,但似乎找不到答案

4

4 回答 4

2

如果您想知道哪个句子最长(即包含最多单词),请使用

var result = textSplitArray.OrderByDescending(x => x.Split(' ').Length)
                           .FirstOrDefault();

如果您想知道最长句子中的单词数,请使用

int Max = textSplitArray.Max(x => x.Split(' ').Length);

或者

int Max = result.Length;

由于句子中的每两个单词都可以用空格分隔,这就是我根据' '空格分隔每个句子的原因。

于 2012-06-08T07:27:42.107 回答
1
string[] textSplitArray = textArray[j].Split('.');
        foreach (string s in textSplitArray)
        {
            int NumberOfWords = s.Split(' ').Length;                
        }
于 2012-06-08T10:29:25.320 回答
0

你可以像这样使用 lambda 表达式:

 var max = textSplitArray.Select((s,i) =>
    {
        return new { value = s.Split(' ').Count() , index = i};
    }).OrderByDescending(item=>item.value).FirstOrDefault();
 int maxValue = max.value;
 int maxPos = max.index;


 //this will return anonymous object that has two properties : {index  , value} that refers to item's value and it's position in the sequence.

检查是否有帮助。

于 2012-06-08T07:36:15.747 回答
0
 string[] source = textSplitArray.Split(new char[] { '.', '?', '!', ' ', ';', ':', ',' }, StringSplitOptions.RemoveEmptyEntries);

source.Length()是你的计数。

于 2012-06-08T07:37:20.987 回答