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