[C# string] 文字列から指定した文字を検索する

スポンサーリンク

指定した文字が文字列内にあるかどうかを判定

Containsメソッドを使うと文字列内に指定した文字(列)があるかの判定ができます。
第一引数に判定したい文字列を指定します。
戻り値は指定した文字がある場合True、ない場合にFalseが返ってきます。

Containsメソッドはstringのインスタンスに紐づいたメソッドなので、
“abcde”.Contains(“c”)string型変数.Contains(“c”)のような呼び出し方になります。

using System;
class Program
{
    public static void Main()
    {
        string str1 = "abcdefg";
        Console.WriteLine(str1.Contains("zz"));  // False
        Console.WriteLine(str1.Contains("cd"));  // True
    }
}
スポンサーリンク

指定した文字が文字列のどこにあるか検索

IndexOfメソッドを使うと指定した文字列がどこから始まるかの位置(インデックス)を取得することができます。
引数には検索する文字列を指定します。
戻り値は指定した文字列が始まるインデックスが返ってきます。
該当する文字列がなかった場合、-1が返ってきます。

using System;
class Program
{
    public static void Main()
    {
        string str1 = "abcdefg";

        // 該当する文字がなかった場合、-1
        Console.WriteLine(str1.IndexOf("zz")); // -1

        // 文字が始まるインデックス(0からの要素番号)が返ってくる
        Console.WriteLine(str1.IndexOf("cd")); // 2

        // 該当したところから後ろを取得
        int hitIndex = str1.IndexOf("cd");
        Console.WriteLine(str1[hitIndex..^1]); // cdef
    }
}

インデックスは0から始まるので“cd”はインデックス2(3文字目)から始まることになります。

15、16行目は応用で検索でヒットしたところから後ろの文字を取得しています。
stringはインデクサ[ ] を付けるとchar型の配列として扱えるため、範囲指定をして取得することができます。
詳しくは[C# string] 文字列の切り出し方法まとめを見てください。


C# プログラミング講座に戻る

コメント

タイトルとURLをコピーしました