3

VB.NET で LIKE 演算子を実行時に大文字と小文字を区別または区別しないように使用する方法はありますか? たとえば、大文字と小文字を区別する、または区別しない比較を行うには、フラグを使用します。

明らかに、これは単純に小文字に変換して適用を強制することで実行できますがOption Compare Binary、これを行うためのより良い方法があるでしょうか?

4

2 に答える 2

1

私はそうは思わない。ただし、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頻繁に使用する予定がある場合は、追加する必要があります。それらは、効率のためにコンパイルして再利用することもできます。

于 2011-06-24T23:35:38.520 に答える
0

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 つのクラスを安全側に提供できます。

おそらく最良の選択肢は、正規表現を学ぶことです;-)

于 2015-05-20T09:38:01.457 に答える