【问题标题】:Number of Non-Space Characters非空格字符数
【发布时间】:2012-09-21 21:19:01
【问题描述】:

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

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

【问题讨论】:

  • 为什么不起作用?会发生什么?
  • 你的 foreach 循环只检查字母。那不排除的不仅仅是空格(数字、特殊字符)吗?
  • @SLacks 它正在工作,但我无法获得我想要的结果。 :( 我只想在我的输出中写入字符让假设我写 ammar asjad 然后它将字符数打印为 11 但我只想输出字符而我的字符是 10。简单地说我想要不计算空格的字符
  • 您需要存储要打印的字符,或者以某种方式转换字符串?不确定您想要什么结果?

标签: c# .net foreach if-statement


【解决方案1】:

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

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

如果您还想剪掉其他空白,例如制表符和换行符,那就另当别论了...

【讨论】:

  • 感谢它现在的工作 :) 如果我想修剪字符?然后我会写 l=s.replace("",String.Empty).Length; ???
  • Replace([string], [string]) 将用第二个参数中的任何字符替换第一个参数中的任何字符。 String.Empty 的计算结果为“”。你可以随心所欲地改变它。
  • 谢谢我找到了确切的解决方案:)
【解决方案2】:

使用 LINQ 非常简单:

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

或者对于字母:

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

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

【讨论】:

    【解决方案3】:

    对于一个你用 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));
    

    【讨论】:

    • @AmmarAsjad:Blam 确实帮忙了——你还想要什么?只需删除此行即可。
    • 感谢它现在的工作 :) 如果我想修剪字符?那么??
    • 定义修剪。有 String Trim 方法。
    【解决方案4】:

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

    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
    

    【讨论】:

      【解决方案5】:

      一个简单的方法是

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

      【讨论】:

        猜你喜欢
        • 2020-10-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-18
        • 2014-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多