はじめに
C#のプログラミングにおいて、文字列の操作は非常に頻繁に行われるタスクです。その中で、特定の文字や部分文字列が最後に現れる位置を探すのが、LastIndexOfメソッドです。
この記事では、このLastIndexOfメソッドの使い方を初心者でも分かるように、解説します。

KindleUnlimited会員であれば、全ての本をご覧頂けます。 Linqを理解すれば、C#プログラミングの世界が変わる 第1版
-188x300.jpg)
LastIndexOfメソッドの基本
C#のstring型にはLastIndexOfというメソッドがあります。このメソッドは、指定した文字または部分文字列が最後に出現するインデックスを返します。
しかし、注意すべき点が2つあります。1つ目は、文字列は0から始まること、2つ目は、探す文字や部分文字列が存在しない場合、-1を返すことです。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 |
using System; public class Program { public static void Main() { string s = "Hello, World! Hello, C#!"; int idx = s.LastIndexOf("Hello"); Console.WriteLine(idx); } } |
出力結果
14

LastIndexOfメソッドのオーバーロード
LastIndexOfメソッドにはいくつかのオーバーロードがあります。オーバーロードとは、同じ名前のメソッドを異なる引数で定義することを指します。
LastIndexOfメソッドでは、探す文字列だけでなく、検索開始位置や検索する文字列の長さを指定することも可能です。
第2引数として、検索開始位置に10を指定している例です。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 |
using System; public class Program { public static void Main() { string s = "Hello, World! Hello, C#!"; int idx = s.LastIndexOf("Hello", 10); Console.WriteLine(idx); } } |
出力結果
0

大文字と小文字を区別しない検索
デフォルトでは、LastIndexOfメソッドは大文字と小文字を区別して検索を行います。しかし、大文字と小文字を区別せずに検索したい場合もあるでしょう。その場合は、StringComparisonオプションを使って、大文字と小文字を区別しない検索を行うことが可能です。
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 |
using System; public class Program { public static void Main() { string s = "Hello, World! hello, C#!"; int idx = s.LastIndexOf("HELLO", StringComparison.OrdinalIgnoreCase); Console.WriteLine(idx); } } |
出力結果
0

文字列が見つからない場合の挙動
LastIndexOfメソッドを使用していると、指定した文字や部分文字列が見つからない場合もあります。
このような場合、LastIndexOfメソッドはどうなるでしょうか?
ソースコード例
1 2 3 4 5 6 7 8 9 10 11 |
using System; public class Program { public static void Main() { string s = "Hello, World!"; int idx = s.LastIndexOf("C#"); Console.WriteLine(idx); } } |
出力結果
-1

他のIndex系のメソッド
LastIndexOfメソッドに関連するメソッドは下記の2つがあります。
- IndexOfメソッドの使い方 指定した文字列の位置を返してくれます。大文字小文字を気にせずに検索する方法なども解説
- IndexOfAnyメソッドの使い方 文字列内で特定の文字集合のどれかが最初に現れる位置を探すときに使用します。
まとめ
C#のLastIndexOfメソッドは、文字列内で指定した文字や部分文字列が最後に出現する位置を見つけるための便利なツールです。基本的な使用方法からオーバーロード、大文字小文字を区別しない検索など、幅広い機能を提供しています。
ただし、文字列のインデックスは0から始まり、探す文字や部分文字列が存在しない場合は-1を返すという2つの注意点を忘れないでください。
