
【C#の基本】C#を使って文字列から特定の文字列を検索する方法
文字列操作において、特定の文字列を検索したい場面はよくあります。検索方法にもいくつか種類があり、C#をはじめとして各種言語においても、汎用メソッドが用意されているほどです。データ処理の基本となるので、確実に覚えておきたい内容の一つでしょう。
- PG
- C#の文字列検索の方法ってどんなものがあるんですか?
- PL
- いくつかパターンがあるので、コードを見ながら紹介していきますね。
目次
IndexOfメソッド
IndexOfメソッドは、対象となる文字列内に指定した文字列が何番目にあるのかを返します。該当する文字列が複数ある場合には、最初に該当する文字列のものが対象です。引数が検索対象文字列一つの場合は、先頭から最初に見つかった文字の位置を返す仕様で、省略可能な第二引数をint型nで指定すると、n番目に見つかった文字の位置を返します。また、このメソッドは、String型のほか、List型、配列型にも使用可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System; namespace Index_Test { class Test { static void Main() { string test_str = "この文字列はテスト用です。"; string search_str = "この"; Console.WriteLine(test_str.IndexOf(search_str)); } } } |
1 |
0 |
このコードでは、対象文字列が検索対象文字列のどの位置にあるかを番号で返します。
(配列などと同じく、開始番号は0からで見つからない場合は-1が返ります。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System; namespace Index_Test2 { class Test { static void Main() { string test_str = "このこのこのこのこのこの文字列"; string search_str = "この"; Console.WriteLine(test_str.IndexOf(search_str, 3)); } } } |
1 |
4 |
このコードでは、検索対象文字列が複数含まれている場合に、その対象文字が3番目にあたる部分がどの位置にあるかを返しています。
Containsメソッド
C#のContainsメソッドは、指定した文字列が対象の文字列に含まれているかを確認するためのものです。IndexOfメソッドと違い、指定した位置を返すものではないですが、指定した文字列の存在を確認したいだけならこれで十分でしょう。このメソッドはString型とList型で利用できますが、配列型には使用できませんので注意が必要です。(LinqのContainsメソッドを使って行うことは可能)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System; namespace Contais_Test { class Test { static void Main() { string test_str = "この文字列はテスト用です。"; string search_str = "は"; Console.WriteLine(test_str.Contains(search_str)); } } } |
1 |
True |
このコードでは、指定した文字列内に検索対象の文字列が含まれているかを返します。
- PG
- 汎用メソッドを使って簡単に検索できるんですね。
- PL
- 複雑な検索条件の場合には正規表現も使えるので、いろいろ試してみると良いですよ。
正規表現を使いこなして汎用性の高い検索ができる
文字列検索を行う上では、正規表現を使いこなすことが重要になります。より汎用性の高い検索をする場合には、指定した文字列の完全一致、部分一致だけでは不十分なケースも出てくるほか、煩雑な処理になってしまうこともあるでしょう。正規表現はそれを解消できる手段になるので、検索条件が複雑になってしまう場合には、積極的に取り入れていくのがおすすめです。