String.Compareメソッドとは異なり、String.IndexOfなど部分文字列の探索と一致を検証するメソッドではStringComparisonを引数にとるオーバーロードは用意されていますが、CompareOptionsをとるオーバーロードは用意されていません。 CompareOptionsを使ってこれらの処理を行うには、CompareInfoクラスのメソッドを使う必要があります。

部分文字列の探索・一致を行うメソッド
Stringクラスのメソッド 代用できるCompareInfoクラスのメソッド
String.IndexOfメソッド CompareInfo.IndexOfメソッド
String.LastIndexOfメソッド CompareInfo.LastIndexOfメソッド
String.StartsWithメソッド CompareInfo.IsPrefixメソッド
String.EndsWithメソッド CompareInfo.IsSuffixメソッド
String.Equalsメソッド (なし)

なお、これらのメソッドでCompareOptions.StringSortを指定することはできません。 指定した場合はArgumentExceptionがスローされます。

次の例は、CompareInfoクラスの各メソッドを使った部分文字列の探索と一致の例です。

CompareOptionsを指定してIndexOf・LastIndexOf・StartsWith・EndsWithに相当する処理を行う
Imports System
Imports System.Globalization

Class Sample
  Shared Sub Main()
    Dim s As String = "かごめかごめ かごのなかのとりは いついつでやる"
    Dim ci As CompareInfo = CultureInfo.InvariantCulture.CompareInfo

    Console.WriteLine(s)

    Console.WriteLine()
    Console.WriteLine("IndexOf(とり、トリ)")
    Console.WriteLine(s.IndexOf("とり"))
    Console.WriteLine(s.IndexOf("トリ"))
    Console.WriteLine(ci.IndexOf(s, "とり"))
    Console.WriteLine(ci.IndexOf(s, "とり", CompareOptions.None))
    Console.WriteLine(ci.IndexOf(s, "トリ"))
    Console.WriteLine(ci.IndexOf(s, "トリ", CompareOptions.IgnoreKanaType))

    Console.WriteLine()
    Console.WriteLine("LastIndexOf(かご、カゴ)")
    Console.WriteLine(s.LastIndexOf("かご"))
    Console.WriteLine(s.LastIndexOf("カゴ"))
    Console.WriteLine(ci.LastIndexOf(s, "かご"))
    Console.WriteLine(ci.LastIndexOf(s, "カゴ"))
    Console.WriteLine(ci.LastIndexOf(s, "カゴ", CompareOptions.IgnoreKanaType Or CompareOptions.IgnoreWidth))

    Console.WriteLine()
    Console.WriteLine("IsPrefix(かごめ、かこめ)")
    Console.WriteLine(s.StartsWith("かごめ"))
    Console.WriteLine(s.StartsWith("かこめ"))
    Console.WriteLine(ci.IsPrefix(s, "かごめ"))
    Console.WriteLine(ci.IsPrefix(s, "かこめ"))
    Console.WriteLine(ci.IsPrefix(s, "かこめ", CompareOptions.IgnoreNonSpace))

    Console.WriteLine()
    Console.WriteLine("IsSuffix(でやる、デヤル)")
    Console.WriteLine(s.EndsWith("でやる"))
    Console.WriteLine(s.EndsWith("デヤル"))
    Console.WriteLine(ci.IsSuffix(s, "でやる"))
    Console.WriteLine(ci.IsSuffix(s, "デヤル"))
    Console.WriteLine(ci.IsSuffix(s, "デヤル", CompareOptions.IgnoreKanaType))
  End Sub
End Class
実行結果
かごめかごめ かごのなかのとりは いついつでやる

IndexOf(とり、トリ)
13
-1
13
13
-1
13

LastIndexOf(かご、カゴ)
7
-1
7
-1
7

IsPrefix(かごめ、かこめ)
True
False
True
False
True

IsSuffix(でやる、デヤル)
True
False
True
False
True

MENTAにてテキストチャットによるサポートを行っています。 問題の解決法をお探しの方や.NET/C#を学習中の方はどうぞご利用ください。