बस मस्ती के लिए, मैंने नियमित अभिव्यक्तियों का उपयोग किये बिना आपकी समस्या से निपटने का प्रयास किया।
मैं निम्न विधि जो की जाँच करता है अगर एक स्ट्रिंग मान अक्षर हैं जो निर्दिष्ट यूनिकोड श्रेणियों के अनुरूप होता है (अपरकेस, लोअरकेस, अंकों ...)
Private Function IsValid(ByVal value As String, _
ByVal ParamArray categories As UnicodeCategory()) _
As Boolean
'Create a hashset with valid unicode categories
Dim validSet = New HashSet(Of UnicodeCategory)(categories)
'Group the string value's characters by unicode category
Dim groupedCharacters = value.GroupBy(Function(c) Char.GetUnicodeCategory(c))
'Get an enumerable of categories contained in the string value
Dim actualCategories = groupedCharacters.Select(Function(group) group.Key)
'Return true if the actual categories correspond
'to the array of valid categories
Return validSet.SetEquals(actualCategories)
End Function
विधि इस तरह से इस्तेमाल किया जा सकता:
Dim myString As String = "aAbbC"
Dim validString As Boolean = IsValid(myString, _
UnicodeCategory.LowercaseLetter, _
UnicodeCategory.UppercaseLetter)
इस विधि का उपयोग करके, आप कुछ भी बदले बिना अपरकेस, लोअरकेस और अंकों के पात्रों को अनुमति दे सकते हैं। बस IsValid में एक तीसरा तर्क जोड़ें: UnicodeCategory.DecimalDigitNumber
स्रोत
2009-07-20 19:22:12
क्या होगा यदि मैं इसे थोड़ा अधिक सामान्य बनाना चाहता हूं, जैसा कि अब कहता है कि मुझे एक स्ट्रिंग चाहिए जो एज़ एजेड, 0-9 और @ @ $ .. हो। और इसमें सभी चार और कोई अन्य चरित्र होना चाहिए। क्या मुझे रेगेक्स में सभी क्रमपरिवर्तन टाइप करने की आवश्यकता है? – Shailendra