2020年10月20日
川俣晶の縁側ソフトウェアC# コーディング How Tototal 1018 count

【入門級】KAMADO TANJIROにAは何回出てくるか? 文字列中に特定の文字が何回出てくるか数えてみよう

Written By: 川俣 晶連絡先

文字列中に特定の文字が何回出てくるか数えてみよう §

 文字列中に特定の文字が何回出てくるか数えてみましょう。

 そのような機能を持ったメソッドはstringクラスにはありませんが、LINQにはあります。それを使えば簡潔に書けます。サンプルソースの方法1です。

 LINQを使わないとすればIndexOfメソッドを繰り返す使うことで、全ての文字を調べることになります。これがサンプルソースの方法2です。

 IndexOfメソッドでは細かい条件指定ができないので、単純にループをまわしてifで判定させているのが方法3です。

 方法1は簡潔だが自由度が低いと思うなら、条件判定をWhereメソッドに分離して方法4のように書き直すことで来ます。この場合は、Whereメソッドの前後にどんな処理を挟むことも自由です。

罠の数々 §

  • 条件付きのCountメソッドの用法は、LengthプロパティとCountメソッドは似たようなもの……と思い込むと見落とす。

参考リンク §

Enumerable.Count メソッド

String.IndexOf メソッド

 String.IndexOf メソッドは文字列専用だが、Enumerable.Count メソッドはどんな型が相手でも使用できる。上のリンクを辿って定義の違いを確認してみよう。

リポジトリ §

https://github.com/autumn009/cshowto

CountChar §

using System;

using System.Linq;

class Program

{

    private static void CountIt(string s)

    {

        // 方法1・LINQを使う

        var n1 = s.Count(c => c == 'A');

        // 方法2・IndexOfを繰り返す

        var idx = 0;

        var n2 = 0;

        for (; ; )

        {

            idx = s.IndexOf('A', idx + 1);

            if (idx <= 0) break;

            n2++;

        }

        // 方法3・単純ループ

        var n3 = 0;

        foreach (var item in s) if (item == 'A') n3++;

        // 方法4・Where+Count

        var n4 = s.Where(c => c == 'A').Count();

        Console.WriteLine($"{s}にAは{n1}個含まれています。");

        Console.WriteLine($"{s}にAは{n2}個含まれています。");

        Console.WriteLine($"{s}にAは{n3}個含まれています。");

        Console.WriteLine($"{s}にAは{n4}個含まれています。");

    }

    static void Main()

    {

        CountIt("KAWAMATA");

        CountIt("MEITANTEI CONAN");

        CountIt("KAMADO TANJIRO");

    }

}

実行結果

KAWAMATAにAは4個含まれています。

KAWAMATAにAは4個含まれています。

KAWAMATAにAは4個含まれています。

KAWAMATAにAは4個含まれています。

MEITANTEI CONANにAは2個含まれています。

MEITANTEI CONANにAは2個含まれています。

MEITANTEI CONANにAは2個含まれています。

MEITANTEI CONANにAは2個含まれています。

KAMADO TANJIROにAは3個含まれています。

KAMADO TANJIROにAは3個含まれています。

KAMADO TANJIROにAは3個含まれています。

KAMADO TANJIROにAは3個含まれています。

Facebook

COOL C# CREW

C#ハウツー連載の解説増量、カラーのソース、新規書き下ろし追加の読みやすい単行本はこちら。

C#ハウツー: 逆引き入門・こんな機能はどう書くの?
キーワード【 川俣晶の縁側ソフトウェアC# コーディング How To
【C# コーディング How To】の次のコンテンツ
2020年
10月
21日
【入門級】4649は何桁? 数値の桁数を調べる2つの方法
3days 0 count
total 984 count
【C# コーディング How To】の前のコンテンツ
2020年
10月
19日
【入門級】大文字だけを取り出したい
3days 0 count
total 872 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20201020101031
サイトの表紙【C# コーディング How To】の表紙【C# コーディング How To】のコンテンツ全リスト 【C# コーディング How To】の入手全リスト 【C# コーディング How To】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.