> 作業効率UP!! オススメのモバイルモニターを紹介

【C#】特定の文字列を含むかどうかを判定する方法

当ページのリンクには広告が含まれています。
  • URLをコピーしました!

プログラミングでデータを操作する時、そのデータに特定の文字列が含まれているかどうか判定することがよくあります。

例えば、ユーザーが画面上にあるテキストボックスに入力した内容に特定のキーワードが含まれているかどうか、あるいはファイルの内容に特定の情報が含まれているかどうかを判定したい時が挙げられます。

C# では、このような文字列の判定を行うための方法がいくつかあります。この記事では C# で特定の文字列が含まれているかどうかを判定する5つの方法を紹介します。

ぜひ、この記事を参考してプログラミングしてみてください。

オススメの参考書

C#の使い方が丁寧に解説しており、「基礎からしっかりと学びたい」という初心者の方にオススメの一冊です。サンプルコードも記載してあり、各章の最後に復習問題があるので理解度を確認しながら読み進めることができます。新しい C# のバージョンにも対応している書籍です。

特定の文字列を含むかどうかを判定する方法

C# で特定の文字列が含まれているかどうかを判定する5つの方法を紹介します。

文字列はstring型として扱われ、様々なメソッドを使用することで、その文字列内に特定の文字列が含まれているかどうかを判定することができます。

  • Containsメソッド
  • IndexOfメソッド
  • StartsWithメソッド
  • EndsWithメソッド
  • Regex.IsMatchメソッド

Contains メソッド

Containsメソッドは、文字列の中に特定の文字列が含まれているかどうかを判定し、bool型の値を返します。含まれている場合はtrue、含まれていない場合はfalseを返します。

判定結果 = 文字列.Contains(特定の文字列)

このメソッドはよく使用するメソッドで、判定したい文字列に対してContainsメソッドを呼び出して、引数として特定の文字列を渡すと、その特定の文字列が含まれているかどうかを判定します。

次のサンプルコードはContainsメソッドを使用した例です。

var text1 = "1234567890";
var serachWord1 = "3";

// 特定の文字列が含まれているかどうかを判定
if (text1.Contains(serachWord1))
{
    Console.WriteLine($"{serachWord1}は含まれています");
}
else 
{
    Console.WriteLine($"{serachWord1}は含まれていません");
}


var text2 = "abcdef";
var serachWord2 = "cde";

// 特定の文字列が含まれているかどうかを判定
if (text2.Contains(serachWord2))
{
    Console.WriteLine($"{serachWord2}は含まれています");
}
else 
{
    Console.WriteLine($"{serachWord2}は含まれていません");
}

実行結果は次のようになります。

3は含まれています
cdeは含まれています

通常、Containsメソッドは大文字と小文字を区別して判定します。例えば、”abcdef”の中から”A”を検索すると、判定結果はfalseになります。これは”A”と”a”は異なる文字として扱われているからです。

Containsメソッドは大文字と小文字を区別せずに判定することも可能です。Containsメソッドの引数にStringComparison.OrdinalIgnoreCaseを指定すると区別されないようになります。

var text3 = "abcdef";
var serachWord3 = "A";

// 特定の文字列が含まれているかどうかを判定
if (text3.Contains(serachWord3))
{
    Console.WriteLine($"{serachWord3}は含まれています");
}
else
{
    Console.WriteLine($"{serachWord3}は含まれていません");
}


var text4 = "abcdef";
var serachWord4 = "A";

// 特定の文字列が含まれているかどうかを判定
if (text4.Contains(serachWord4, StringComparison.OrdinalIgnoreCase))
{
    Console.WriteLine($"{serachWord4}は含まれています");
}
else
{
    Console.WriteLine($"{serachWord4}は含まれていません");
}

実行結果は次のようになります。

Aは含まれていません
Aは含まれています

IndexOf メソッド

IndexOfメソッドは文字列の中に特定の文字列が含まれている場合、その位置のインデックスを返します。特定の文字列が含まれていない場合、-1を返します。つまり、IndexOfメソッドを実行して返ってきた値が0以上なら、特定の文字列が含まれていることになります。

インデックス = 文字列.IndexOf(特定の文字列)

次のサンプルコードはIndexOfメソッドを使用した例です。

var text1 = "1234567890";
var serachWord1 = "3";

// 特定の文字列が含まれているかどうかを判定
var index1 = text1.IndexOf(serachWord1);
if(index1 != -1) 
{
    Console.WriteLine($"{serachWord1}は文字列内のインデックス{index1}にあります");
}
else
{
    Console.WriteLine($"{serachWord1}は見つかりませんでした");
}


var text2 = "abcdef";
var serachWord2 = "cde";

// 特定の文字列が含まれているかどうかを判定
var index2 = text2.IndexOf(serachWord2);
if (index2 != -1)
{
    Console.WriteLine($"{serachWord2}は文字列内のインデックス{index2}にあります");
}
else
{
    Console.WriteLine($"{serachWord2}は見つかりませんでした");
}

実行結果は次のようになります。

3は文字列内のインデックス2にあります
cdeは文字列内のインデックス2にあります

IndexOfメソッドもContainsメソッド同様に大文字と小文字を区別して判定します。

大文字と小文字を区別せずに判定したいなら、IndexOfメソッドもStringComparison.OrdinalIgnoreCaseを指定すれば区別されないようになります。

var text3 = "abcdef";
var serachWord3 = "A";

// 特定の文字列が含まれているかどうかを判定
var index3 = text3.IndexOf(serachWord3);
if (index3 != -1)
{
    Console.WriteLine($"{serachWord3}は文字列内のインデックス{index3}にあります");
}
else
{
    Console.WriteLine($"{serachWord3}は見つかりませんでした");
}


var text4 = "abcdef";
var serachWord4 = "A";

// 特定の文字列が含まれているかどうかを判定
var index4 = text4.IndexOf(serachWord4, StringComparison.OrdinalIgnoreCase);
if (index4 != -1)
{
    Console.WriteLine($"{serachWord4}は文字列内のインデックス{index4}にあります");
}
else
{
    Console.WriteLine($"{serachWord4}は見つかりませんでした");
}

実行結果は次のようになります。

Aは見つかりませんでした
Aは文字列内のインデックス0にあります

StartsWith メソッド

StartsWithメソッドは特定の文字列が先頭に含まれているかどうかを判定し、その結果をbool値で返します。特定の文字列から始まっている場合はtrue、特定の文字列から始まっていない場合はfalseを返します。

判定結果 = 文字列.StartsWith(特定の文字列)

次のサンプルコードはStartsWithメソッドを使用した例です。

var text1 = "abcdef";
var serachWord1 = "a";

// 特定の文字列から始まっているかどうかを判定
if (text1.StartsWith(serachWord1))
{
    Console.WriteLine($"{serachWord1}から始まっています");
}
else
{
    Console.WriteLine($"{serachWord1}から始まっていません");
}


var text2 = "abcdef";
var serachWord2 = "b";

// 特定の文字列から始まっているかどうかを判定
if (text2.StartsWith(serachWord2))
{
    Console.WriteLine($"{serachWord2}から始まっています");
}
else
{
    Console.WriteLine($"{serachWord2}から始まっていません");
}

実行結果は次のようになります。

aから始まっています
bから始まっていません

StartsWithメソッドも通常は大文字と小文字を区別して判定します。

大文字と小文字を区別せずに判定したいなら、StringComparison.OrdinalIgnoreCaseを指定すれば区別されないようになります。

var text3 = "abcdef";
var serachWord3 = "A";

// 特定の文字列から始まっているかどうかを判定
if (text3.StartsWith(serachWord3))
{
    Console.WriteLine($"{serachWord3}から始まっています");
}
else
{
    Console.WriteLine($"{serachWord3}から始まっていません");
}


var text4 = "abcdef";
var serachWord4 = "A";

// 特定の文字列から始まっているかどうかを判定
if (text4.StartsWith(serachWord4, StringComparison.OrdinalIgnoreCase))
{
    Console.WriteLine($"{serachWord4}から始まっています");
}
else
{
    Console.WriteLine($"{serachWord4}から始まっていません");
}

実行結果は次のようになります。

Aから始まっていません
Aから始まっています

EndsWith メソッド

EndsWithメソッドは特定の文字列が末尾に含まれているかどうかを判定し、その結果をbool値で返します。特定の文字列で終わっている場合はtrue、特定の文字列で終わっていない場合はfalseを返します。

判定結果 = 文字列.EndsWith(特定の文字列)

次のサンプルコードはEndsWithメソッドを使用した例です。

var text1 = "abcdef";
var serachWord1 = "f";

// 特定の文字列で終わっているかどうかを判定
if (text1.EndsWith(serachWord1))
{
    Console.WriteLine($"{serachWord1}で終わっています");
}
else
{
    Console.WriteLine($"{serachWord1}で終わっていません");
}


var text2 = "abcdef";
var serachWord2 = "e";

// 特定の文字列で終わっているかどうかを判定
if (text2.EndsWith(serachWord2))
{
    Console.WriteLine($"{serachWord2}で終わっています");
}
else
{
    Console.WriteLine($"{serachWord2}で終わっていません");
}

実行結果は次のようになります。

fで終わっています
eで終わっていません

EndsWithメソッドも通常は大文字と小文字を区別して判定します。

大文字と小文字を区別せずに判定したいなら、StringComparison.OrdinalIgnoreCaseを指定すれば区別されないようになります。

var text3 = "abcdef";
var serachWord3 = "F";

// 特定の文字列で終わっているかどうかを判定
if (text3.EndsWith(serachWord3))
{
    Console.WriteLine($"{serachWord3}で終わっています");
}
else
{
    Console.WriteLine($"{serachWord3}で終わっていません");
}


var text4 = "abcdef";
var serachWord4 = "F";

// 特定の文字列で終わっているかどうかを判定
if (text4.EndsWith(serachWord4, StringComparison.OrdinalIgnoreCase))
{
    Console.WriteLine($"{serachWord4}で終わっています");
}
else
{
    Console.WriteLine($"{serachWord4}で終わっていません");
}

実行結果は次のようになります。

Fで終わっていません
Fで終わっています

Regex クラス(正規表現)

正規表現は特定の文字列のパターンを検索・置換・抽出できるツールです。正規表現を使うと、単純な文字列の検索だけでなく、さらに複雑な条件で判定を行えます。

C# のSystem.Text.RegularExpressions名前空間には、正規表現を使うための多くのクラスとメソッドが定義されています。ここではRegexクラスのIsMatchメソッドを使い、特定の正規表現パターンに一致する文字列があるかどうかをチェックする方法を紹介します。

判定結果 = Regex.IsMatch(文字列, 特定の文字列)

次のサンプルコードはIsMatchメソッドを使用した例です。

using System.Text.RegularExpressions;

var text1 = "abcdef";
var serachWord1 = "abc";

// 特定の文字列が含まれているかどうかを判定
if (Regex.IsMatch(text1, serachWord1))
{
    Console.WriteLine($"{serachWord1}は含まれています");
}
else
{
    Console.WriteLine($"{serachWord1}は含まれていません");
}


var text2 = "abcdef";
var serachWord2 = "abc|def";

// 特定の文字列が含まれているかどうかを判定
if (Regex.IsMatch(text2, serachWord2))
{
    Console.WriteLine($"{serachWord2.Replace("|", "もしくは")}のいずれかが含まれています");
}
else
{
    Console.WriteLine($"{serachWord2.Replace("|", "もしくは")}のいずれかも含まれていません");
}

実行結果は次のようになります。

abcは含まれています
abcもしくはdefのいずれかが含まれています

まとめ

この記事では、特定の文字列が含まれているかどうかを判定する方法について紹介しました。

C# では以下の5つのメソッドを使用することで、特定の文字列が含まれているかどうかを簡単に判定することができます。

  • Containsメソッド
  • IndexOfメソッド
  • StartsWithメソッド
  • EndsWithメソッド
  • Regex.IsMatchメソッド

これらのメソッドの扱い方をぜひ理解しておきましょう。

以上、最後まで読んで頂きありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!