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

1つは、lをs.Lengthで上書きしています。2つ私は思わない:文字です。

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

スキート射撃+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 に答える