C#のContainsで文字列が含まれているか確認する方法を詳しく解説

- システム
エンジニア - Listから文字列を確認することは可能ですか?
- プロジェクト
マネージャー - はい。ここではContainsを使った文字列確認方法を見ていきましょう。
[C#]Containsで文字列が含まれているか確認する方法とは?
今回は、C#のContains関数を使って、文字列やListおよびDictionary内で指定文字列が含まれているか否か確認する方法について説明します。また、大文字小文字を区別しないContainsの使い方や、正規表現を使った方法について紹介します。
興味のある方はぜひご覧ください。
文字列
C#のContains関数を使えば、文字列内に指定文字列が含まれているか否かを確認できます。また、StartsWith関数やEndsWith関数を使用すれば、指定文字で始まる/終わるか否かを確認できます。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
using System;
public class Hello{
public static void Main(){
// 文字列
string str = “Hello C#”;
// 指定文字列が含まれるか
Console.WriteLine(str.Contains(“Hello”)); // True
Console.WriteLine(str.Contains(“World”)); // False
// 指定文字列で始まるか
Console.WriteLine(str.StartsWith(“Hello”)); // True
Console.WriteLine(str.StartsWith(“C#”)); // False
// 指定文字列で終わるか
Console.WriteLine(str.EndsWith(“Hello”)); // False
Console.WriteLine(str.EndsWith(“C#”)); // True
}
}
|
実行結果は以下のようになります。
1
2
3
4
5
6
|
True
False
True
False
False
True
|
List
Contains関数を使えば、List内に指定要素が含まれているか否かを確認できます。また、FindAll関数を使えば、部分一致で確認できます。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
using System;
using System.Collections.Generic;
public class Hello{
public static void Main(){
// 初期化
var mylist = new List<string>(){ “red”, “green”, “blue” };
/**************************/
/* Containsで部分一致検索 */
/**************************/
// Listに含まれているか検索
Console.WriteLine(mylist.Contains(“red”)); // True
Console.WriteLine(mylist.Contains(“yellow”)); // False
// ContainsのAnd検索
Console.WriteLine(mylist.Contains(“red”) && mylist.Contains(“blue”)); // True
Console.WriteLine(mylist.Contains(“red”) && mylist.Contains(“yellow”)); // False
// ContainsのOr検索
Console.WriteLine(mylist.Contains(“red”) || mylist.Contains(“yellow”)); // True
Console.WriteLine(mylist.Contains(“black”) || mylist.Contains(“white”)); // False
/*************************/
/* FindAllで部分一致検索 */
/*************************/
// eを含む要素を検索
Console.WriteLine(“{0}”, string.Join(“,”, mylist.FindAll(s => s.Contains(“e”)))); // red,green,blue
// 長さが4以上の要素を検索
Console.WriteLine(“{0}”, string.Join(“,”, mylist.FindAll(s => s.Length >= 4))); // green,blue
}
}
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
8
|
True
False
True
False
True
False
red,green,blue
green,blue
|
Dictionary
ContainsKey/ContainsValue関数を使えば、Dictionary内に指定要素が含まれているか否かを確認できます。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
using System;
using System.Collections.Generic;
public class Hello{
public static void Main(){
// 初期化
var mymap = new Dictionary<string, string>(){
{“key1”, “value1”},
{“key2”, “value2”},
{“key3”, “value3”},
{“key4”, “value4”},
{“key5”, “value5”},
};
// key指定の検索
Console.WriteLine(mymap.ContainsKey(“key2”)); // True
Console.WriteLine(mymap.ContainsKey(“key7”)); // False
// value指定の検索
Console.WriteLine(mymap.ContainsValue(“value2”)); // True
Console.WriteLine(mymap.ContainsValue(“value7”)); // False
}
}
|
実行結果は以下のようになります。
1
2
3
4
|
True
False
True
False
|
大文字小文字を区別しない
C#では、Contains関数を拡張すれば、大文字小文字を区別しないで指定文字列が含まれるか否かを確認できます。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
using System;
public static class Sample{
// 拡張メソッド
public static bool Contains(this string target, string value, StringComparison comparisonType){
return target.IndexOf( value, comparisonType ) >= 0;
}
}
public class Hello{
public static void Main(){
// 文字列
string str = “Hello C#”;
// 指定文字列が含まれるか
Console.WriteLine(str.Contains(“hello”)); // False
Console.WriteLine(str.Contains(“hello”, StringComparison.Ordinal)); // False
Console.WriteLine(str.Contains(“hello”, StringComparison.OrdinalIgnoreCase)); // True
}
}
|
実行結果は以下のようになります。
1
2
3
|
False
False
True
|
正規表現
Regex.IsMatch関数を拡張すれば、正規表現で指定文字列が含まれるか否かを確認できます。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
using System;
using System.Text.RegularExpressions;
public class Hello{
public static void Main(){
// 文字列
string str = “Hello C#”;
// 指定文字列が含まれるか正規表現でチェック
Console.WriteLine(Regex.IsMatch(str, @”[0-9]”)); // False
Console.WriteLine(Regex.IsMatch(str, @”^[a-z]+”)); // False
Console.WriteLine(Regex.IsMatch(str, @”[a-z]*$”)); // True
}
}
|
実行結果は以下のようになります。
1
2
3
|
False
False
True
|
- システム
エンジニア - 複数の文字列の確認もできるのですね。
- プロジェクト
マネージャー - 応用として配列の要素も確認できますが、ここは注意が必要です。ぜひ基本をマスターしてください。
まとめ
いかがでしたでしょうか。C#のContains関数を使って、文字列やListおよびDictionary内で指定文字列が含まれているか否か確認する方法について説明しました。また、大文字小文字を区別しないContainsの使い方や、正規表現を使った方法について紹介しました。
ぜひご自身でC#のソースコードを書いて、理解を深めてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。

-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。


C#新着案件New Job
-
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅) -
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)