Вот что у меня есть до сих пор, он настроен для отображения общего количества слов, которые мне нужно сохранить, или изменить, чтобы сохранить, чтобы отображалось среднее количество букв в каждом слове, пожалуйста, помогите кому-нибудь, если вы можете . Спасибо большое!:
private void btnCheck_Click (отправитель объекта, 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;
}
Я просто повторяю проверку изменений между пустым и не пустым (для подсчета слов) и, читая буквы, считаю буквы. В конце, если мы читаем буквы и последний символ является буквой, мы должны добавить последнее слово для подсчета.