如何在字符串中计算char时删除句号

时间:2012-12-02 21:19:37

标签: c#

我已经设置了创建c#控制台文本分析程序的任务。该程序允许用户逐字逐句输入一个句子,一个完整的句子是句子的结尾,一个双重句号是打破循环并给出文本的分析

我有正确计算单词和句子的程序。

我的问题是:如何更改我的代码,以便程序不会将完全停止计算为角色?

以下是我的代码

 case "1":

    string UserSentence="";
    string newString="";
    string UserWord;
    int SentenceCount=1;
    int WordCount=0;
    double CharCount=0;

    Console.WriteLine("You have chosen to type in your sentance(s) for analysis.\nPlease input each word then press enter.\n\nUse one full stop to end the sentence.\nUse two full stops to finish inputting sentences");
    while (true)
        {
            UserWord = Console.ReadLine();
            WordCount++;
            UserSentence = UserSentence+UserWord;


                if (UserWord == "..")
                    {
                        CharCount=CharCount-2;
                        WordCount--;
                        break;
                    }

                if (UserWord == ".")
                    {
                        CharCount=CharCount-1;
                        WordCount--;
                        SentenceCount++;
                    }
        }

    foreach (char c in UserSentence)

        {
            if (c ==' ')
            continue;
            newString += c;
        }
        CharCount = newString.Length;
        Console.WriteLine("Their are {0} characters",CharCount);
        Console.WriteLine("Their are {0} Sentences",SentenceCount);
        Console.WriteLine("Their are {0} Words",WordCount);
    break;

我试图通过减去2或1来改正字符数,具体取决于完全停止的数量,但它不起作用

感谢您提前提供任何帮助。

3 个答案:

答案 0 :(得分:1)

在这里你只需覆盖 CharCount的值,丢弃你之前做过的所有减法:

CharCount = newString.Length;

可以改为:

CharCount = CharCount + newString.Length;

为了给出正确的结果。

还有其他选项,例如计算句子中.的数量,在获得长度之前用空字符串替换句子中的所有.等等。

关于样式的注意事项:在C#中,局部变量通常是camelCase,而不是PascalCase。

答案 1 :(得分:0)

您可以使用LINQ来计算非空格或点的字符。

int characterCount = s.Count(x => x != ' ' && x != '.');

答案 2 :(得分:0)

你可以计算不是“。”的字符。

CharCount = newString.Where(c => !c.Equals('.') && !c.Equals(' ')).Count();