VB.NET で LIKE 演算子を実行時に大文字と小文字を区別または区別しないように使用する方法はありますか? たとえば、大文字と小文字を区別する、または区別しない比較を行うには、フラグを使用します。
明らかに、これは単純に小文字に変換して適用を強制することで実行できますがOption Compare Binary
、これを行うためのより良い方法があるでしょうか?
VB.NET で LIKE 演算子を実行時に大文字と小文字を区別または区別しないように使用する方法はありますか? たとえば、大文字と小文字を区別する、または区別しない比較を行うには、フラグを使用します。
明らかに、これは単純に小文字に変換して適用を強制することで実行できますがOption Compare Binary
、これを行うためのより良い方法があるでしょうか?
私はそうは思わない。ただし、Like
大文字と小文字を区別しないことが重要な場合は、とにかく演算子を使用しないでください。代わりに、正規表現を使用してください。
Dim re As New System.Text.RegularExpressions.Regex("^.+ough$", System.Text.RegularExpressions.RegexOptions.IgnoreCase)
re.IsMatch("rough") ' True
re.IsMatch("tough") ' True
re.IsMatch("rOUGH") ' True
re.IsMatch("ough") ' False
学ぶべきことはたくさんありますが、基本的に.
は に相当し?
、.*
に相当し*
、 に\d
相当し#
ます。同等性のためにもラップする必要が^
あります。$
正規表現ははるかに強力で、必要なことを実行します。
Imports System.Text.RegularExpressions
頻繁に使用する予定がある場合は、追加する必要があります。それらは、効率のためにコンパイルして再利用することもできます。
Compare Binary
デフォルト設定が(大文字と小文字を区別する)であっても、大文字と小文字を区別しない比較が行われるように、カスタム クラスを提供できます。Option Compare
コードファイルで指定できます。
Option Compare Text
Public Class CaseInsensitiveLikeOperator
Public Shared Function IsLike(str As String, pattern As String) As Boolean
Return str Like pattern
End Function
End Class
これで動作します:
Dim isSame = CaseInsensitiveLikeOperator.IsLike("foo", "Fo?") ' True
デフォルトが であるOption Compare Text
場合は、2 つのクラスを安全側に提供できます。
おそらく最良の選択肢は、正規表現を学ぶことです;-)