此程序计算并显示用户输入的单词数和字符数。 “单词计数器”工作正常,但我无法弄清楚如何计算字符而不计算其间的空格。
private void userTextBox_TextChanged(object sender, EventArgs e)
{
string userInput = userTextBox.Text;
userInput = userInput.Trim();
string[] wordCount = userInput.Split(null);
//Here is my error
string[] charCount = wordCount.Length;
wordCountOutput.Text = wordCount.Length.ToString();
charCountOutput.Text = charCount.Length.ToString();
}
答案 0 :(得分:4)
您可以使用LINQ来计算没有空格的字符:
int charCount = userInput.Count(c => !Char.IsWhiteSpace(c));
但是,您的代码表明您只是不知道如何计算单词,所以
替换
string[] charCount = wordCount.Length;
与
int words = wordCount.Length;
答案 1 :(得分:4)
由于你的名字是“Learning2Code”,我想我会给你一个答案,用最先进的技术修复你原来的尝试:
private void userTextBox_TextChanged(object sender, EventArgs e)
{
string userInput = userTextBox.Text;
userInput = userInput.Trim();
string[] wordCount = userInput.Split(null);
int charCount = 0;
foreach (var word in wordCount)
charCount += word.Length;
wordCountOutput.Text = wordCount.Length.ToString();
charCountOutput.Text = charCount.ToString();
}
答案 2 :(得分:2)
你已经有了每个单词,所以要计算每个单词中的字符并总计总数:
var charCount = words.Sum(w => w.Length);
注意:您将单词数组存储为'wordCount' - 我将其重命名为上述代码段中的'words',以保证语义正确。即:
string[] words = userInput.Split(null);
答案 3 :(得分:0)
只需用Regex替换所有空格(和新行字符):
Regex.Replace(inputString, "[\s\n]", "");
答案 4 :(得分:0)
有一个空格少于单词数(例如"once upon a time"
包含四个单词和三个空格),因此您可以计算空格数。然后只需从输入字符串的长度中减去空格数:
int charCount = userInput.Length - (wordCount.Length - 1);
由于这是一个整数而不是字符串数组,因此在输出结果时不要使用Length
:
charCountOutput.Text = charCount.ToString();