非空格字符数

时间:2012-09-21 21:19:01

标签: c# .net foreach if-statement

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

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

5 个答案:

答案 0 :(得分: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();

如果你想要其他空白区域,比如标签和换行符,那么这也是一个不同的故事......

答案 1 :(得分:5)

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

l = Convert.ToInt32(s.Length);

尝试

!Char.IsWhiteSpace将消除空间,标签,......这可能就是你要找的东西。

Char.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));

答案 2 :(得分:5)

使用LINQ非常简单:

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

或信件:

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

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

答案 3 :(得分: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

答案 4 :(得分:0)

一种简单的方法是

String noSpaces = s.Replace(" ", "");
return noSpaces.Length;