C# - 显示字符数而不计算空格?

时间:2013-11-10 00:05:48

标签: c# richtextbox

此程序计算并显示用户输入的单词数和字符数。 “单词计数器”工作正常,但我无法弄清楚如何计算字符而不计算其间的空格。

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

5 个答案:

答案 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();