需要显示字符串中每个单词的平均字母并显示

Need to display the average letters of each word in a string and display it

目前我是这样的,设置为显示总字数,我需要保留,或者修改保留让每个字的平均字母数显示,请如果可以的话,帮助任何人。非常感谢!:

private void btnCheck_Click(object sender, EvenArgs e)

{
     string words = tbxArgument.Text.Trim();
     MessageBox.Show("Number of Words: " + CountWords(words));
}

private int CountWords(字符串单词)

{
     string[] allWords = words.Split(' ');
     return allWords.Length;
}

不确定这是否是您想要完成的。

但这会给你所有单词的平均长度。

double totalCharacters = 0;
double avgCharacters = 0;
string[] words = new string[] {"Word1","Word2","Word3" } ;


foreach (string tmpString in words)
{
    totalCharacters = totalCharacters + tmpString.Length;
}

avgCharacters = totalCharacters/words.Length;

这是一种只对字符串进行交互的方法,不会进行需要分配额外内存的拆分。只是一个优化,娱乐一下:

public static double GetAvgLetters(string text, out int wordsCount)
{
    wordsCount = 0;
        
    if (string.IsNullOrWhiteSpace(text))
    {
        return double.NaN;
    }

    var lettersCount = 0;

    var isLetter = text[0] != ' ';
    var readingLetter = isLetter;
    for (int i = 0; i < text.Length; i++)
    {
        isLetter = text[i] != ' ';

        if (isLetter != readingLetter)
        {
            readingLetter = isLetter;

            if (readingLetter)
            {
                lettersCount++;
            }
            else
            {
                wordsCount++;
            }
        }
        else if (isLetter)
        {
            lettersCount++;
        }
    }

    if (isLetter == readingLetter && isLetter)
    {
        wordsCount++;
    }

    return lettersCount / (double)wordsCount;
}

我只是重复检查空白和非空白之间的变化(以计算单词数),并在阅读字母时计算字母数。最后,如果我们正在阅读字母并且最后一个字符是一个字母,我们必须添加最后一个单词来计数。