有沒有辦法在運行時使用VB.NET中的LIKE運算符作爲區分大小寫或不敏感的?例如,使用標誌來區分大小寫或不敏感的比較。在運行時與VB.NET LIKE運算符進行敏感比較(無選項比較)
顯然這可以通過簡單地將它們轉換爲小寫並強制應用程序到Option Compare Binary
來完成,但也許有更好的方法來做到這一點?
有沒有辦法在運行時使用VB.NET中的LIKE運算符作爲區分大小寫或不敏感的?例如,使用標誌來區分大小寫或不敏感的比較。在運行時與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
您可以提供兩個類是在安全方面。
也許最好的選擇是學習正則表達式;-)
這就是我並不需要太多強大的問題,我需要那麼強大:) –
@dr。邪惡:你能否給我們一個關於這種模式的例子,以及它將在什麼情況下使用? – Ryan
它將由用戶輸入,因爲普通用戶無法編寫正則表達式,但將通配符轉換爲正則表達式仍然很骯髒,但仍然可行。 –