我编写了一个控制台应用程序来计算段落中非空格字符的数量,但它无法正常工作。
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();
答案 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将消除空间,标签,......这可能就是你要找的东西。
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;