C#のString.IndexOf()メソッドとは?使い方とサンプルコード解説
C#のString.IndexOf()メソッドは、指定したUnicode文字または文字列が、現在の文字列インスタンス内で最初に出現する位置を、0から始まるインデックス(ゼロベース)で取得するために使用されます。対象の文字列が見つからなかった場合には -1 を返します。
構文
基本的な構文は以下の通りです。
public int IndexOf (string val);
ここで、val は検索対象となる文字列です。
戻り値
- 見つかった場合:最初の出現位置(0から始まるインデックス)
- 見つからなかった場合:-1
なお、IndexOf()には引数に開始位置や検索範囲を指定できるオーバーロードも用意されており、柔軟な文字列検索が可能です。
例1:文字列中の文字位置を検索する
まずは基本的な使用例を見てみましょう。
using System;
public class Demo {
public static void Main(String[] args) {
string str1 = "Jacob";
string str2 = "John";
Console.WriteLine("String 1 = "+str1);
Console.WriteLine("HashCode of String 1 = "+str1.GetHashCode());
Console.WriteLine("Index of character 'o' is str1 = " + str1.IndexOf("o"));
Console.WriteLine("\nString 2 = "+str2);
Console.WriteLine("HashCode of String 2 = "+str2.GetHashCode());
Console.WriteLine("Index of character 'o' is str2 =" + str2.IndexOf("o"));
bool res = str1.Contains(str2);
if (res)
Console.WriteLine("Found!");
else
Console.WriteLine("Not found!");
}
}出力結果
このコードを実行すると、次のような結果が出力されます。
String 1 = Jacob HashCode of String 1 = -790718923 Index of character 'o' is str1 = 3 String 2 = John HashCode of String 2 = -1505962600 Index of character 'o' is str2 = 1 Not found!
「Jacob」の場合、小文字の「o」は4番目の文字なのでインデックスは 3 となります。「John」の場合は2番目の文字なので 1 です。また、「Jacob」の中に「John」は含まれていないため、Contains()の判定結果は「Not found!」となっています。
例2:大文字・小文字の違いによる検索結果
次に、大文字と小文字が異なるケースの例を見てみましょう。
using System;
public class Demo {
public static void Main(String[] args) {
string str1 = "Kevin";
string str2 = "Evin";
Console.WriteLine("String 1 = "+str1);
Console.WriteLine("HashCode of String 1 = "+str1.GetHashCode());
Console.WriteLine("Index of character 'k' in str1 = " + str1.IndexOf("k"));
Console.WriteLine("\nString 2 = "+str2);
Console.WriteLine("HashCode of String 2 = "+str2.GetHashCode());
Console.WriteLine("Index of character 'k' in str2 =" + str2.IndexOf("k"));
bool res = str1.Contains(str2);
if (res)
Console.WriteLine("Found!");
else
Console.WriteLine("Not found!");
}
}出力結果
実行すると、次の結果が得られます。
String 1 = Kevin HashCode of String 1 = -768104063 Index of character 'k' in str1 = -1 String 2 = Evin HashCode of String 2 = 1223510568 Index of character 'k' in str2 = -1 Not found!
「Kevin」には大文字の「K」しか含まれていないため、小文字の「k」を検索しても該当箇所がなく、結果は -1 になります。このように、IndexOf()は大文字と小文字を区別して検索を行う点に注意が必要です。大文字小文字を区別せずに検索したい場合は、あらかじめ ToLower() や ToUpper() などで文字列を揃えてから検索するとよいでしょう。
-
C#のSingleOrDefault()メソッドの使い方をわかりやすく解説
SingleOrDefault()メソッドとはC#のLINQに含まれるSingleOrDefault()メソッドは、シーケンスから単一の特定要素を返すメソッドです。大きな特徴は、要素がシーケンス内に存在しない場合でも例外をスローせず、その型のデフォルト値を返すという点にあります。たとえば参照型の場合は null、数値型の場合は 0 といったデフォルト値が返されるため、空のコレクションを安全に扱いたい場面で非常に便利です。Single()メソッドとの違い似た名前の Single() メソッドは、要素が存在しない場合や複数の要素が見つかった場合に例外(InvalidOperationExcepti
-
【C#】String.Join()メソッドで文字列配列を連結する方法
String.Join()メソッドとはC#のString.Join()メソッドは、文字列配列のすべての要素を1つの文字列に連結するためのメソッドです。各要素の間には、引数で指定した区切り文字(セパレーター)が自動的に挿入されます。たとえば、区切り文字として改行コード「\n」を指定すれば、配列の各要素がそれぞれ別の行に配置された、複数行の文字列を簡単に作成できます。基本的な構文String.Join(\n, starray);第1引数: 要素間に挿入する区切り文字第2引数: 連結対象の文字列配列戻り値: 連結された1つの文字列サンプルコード以下は、5つの文字列要素を持つ配列を改行コードで連結し、