0

该程序在用户键入时计算并显示字数和字符数。“字数计数器”工作正常,但我不知道如何计算字符而不计算其间的空格。

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();
}
4

5 回答 5

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();
}
于 2013-11-10T00:28:58.817 回答
4

您可以使用 LINQ 来计算没有空格的字符:

int charCount = userInput.Count(c => !Char.IsWhiteSpace(c));

但是,您的代码表明您只是不知道如何计算单词,所以

代替

string[] charCount = wordCount.Length;

int words = wordCount.Length;
于 2013-11-10T00:07:34.997 回答
2

你已经有了每个单词,所以计算每个单词中的字符并将总数相加:

var charCount = words.Sum(w => w.Length);

注意:您将单词数组存储为“wordCount”——我在上面的代码片段中将其重命名为“words”,以确保语义正确。IE:

string[] words = userInput.Split(null);
于 2013-11-10T00:09:44.860 回答
0

只需用正则表达式替换所有空格(和换行符):

Regex.Replace(inputString, "[\s\n]", "");
于 2013-11-10T00:09:27.860 回答
0

比单词数少一个空格(例如"once upon a time"包含四个单词和三个空格),因此可以计算空格数。然后只需从输入字符串的长度中减去空格数:

int charCount = userInput.Length - (wordCount.Length - 1);

Length因为这是一个整数而不是字符串数组,所以输出结果时不要使用:

charCountOutput.Text = charCount.ToString();
于 2013-11-10T00:18:03.880 回答