0

我编写了一个控制台应用程序来计算段落中非空格字符的数量,但它无法正常工作。

int l=0;
string s;

Console.WriteLine("Enter Paragraph: ");
s = Console.ReadLine();

foreach (char c in s)
{
    if (char.IsLetter(c))
    {
        l++;
    }
}

l = Convert.ToInt32(s.Length);

Console.WriteLine("Your Paragraph Length is: " + l);
Console.ReadLine();
4

5 回答 5

8

由于您的问题专门去除了空格......在我看来这会更有效:

        int l=0; 
        string s; 
        Console.WriteLine("Enter Paragraph: "); 
        s = Console.ReadLine(); 

        l = s.Replace(" ", String.Empty).Length; 
        Console.WriteLine("Your Paragraph Length is: " + l); 
        Console.ReadLine();

如果您还想要修剪其他空白,例如制表符和换行符,那将是另一回事......

于 2012-09-21T21:22:56.177 回答
5

对于一个你已经用 s.Length 写 l 了。两个我不认为:是一个字符。

l = Convert.ToInt32(s.Length);

尝试

!Char.IsWhiteSpace 将消除空格、制表符……这可能是您正在寻找的。

字符.IsWhiteSpace

    int l=0;
    string s;
    Console.WriteLine("Enter Paragraph: ");
    s = Console.ReadLine();
    foreach (char c in s)
    {
        if (!char.IsWhiteSpace(c))
        {
            l++;
        }
    }
    Console.WriteLine("Your Paragraph Length is: " + l);
    Console.ReadLine();

借用 Skeet +1。当他在线时,我需要一个小闪光灯,所以我知道甚至不要尝试。

    count = line.Count(c => !Char.IsWhiteSpace(c));
于 2012-09-21T21:21:07.660 回答
5

使用 LINQ 非常简单:

var nonSpaces = line.Count(c => c != ' ');

或者对于字母:

var letters = line.Count(char.IsLetter);

这将为每个字符执行一个委托,但不会开始创建您真正不需要的额外字符串。

于 2012-09-21T21:23:46.507 回答
0

你有没有尝试过类似的东西

int c = "tada test me ".Replace(" ","").Length;

所以在你的情况下

#region number of characters other than spaces 
int l=0; 
string s; 
Console.WriteLine("Enter Paragraph: "); 
s = Console.ReadLine(); 
l = s.Replace(" ","").Length; 
Console.WriteLine("Your Paragraph Length is: " + l); 
Console.ReadLine(); 
#endregion
于 2012-09-21T21:23:12.807 回答
0

一个简单的方法是

String noSpaces = s.Replace(" ", "");
return noSpaces.Length;
于 2012-09-21T21:24:10.560 回答