非空格字符数

Amm*_*jad 0 .net c# 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();
Run Code Online (Sandbox Code Playgroud)

Dav*_*vid 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();
Run Code Online (Sandbox Code Playgroud)

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


pap*_*zzo 5

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

l = Convert.ToInt32(s.Length);
Run Code Online (Sandbox Code Playgroud)

尝试

!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();
Run Code Online (Sandbox Code Playgroud)

借用Skeet +1.当他上线时我需要一个小闪光器,所以我知道甚至不会尝试.

    count = line.Count(c => !Char.IsWhiteSpace(c));
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 5

LINQ非常简单:

var nonSpaces = line.Count(c => c != ' ');
Run Code Online (Sandbox Code Playgroud)

或者对于信件:

var letters = line.Count(char.IsLetter);
Run Code Online (Sandbox Code Playgroud)

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