我正在尋求我的程序幫助。我有一個用戶輸入6位數字;這些輸入必須是字母數字。我已經完成了數字的TryParse
方法,但是我正在查找字符串是否包含alpha的驗證。VB確定字符串中的值
我知道你必須使用ASC
,但我不確定如何開發一個範圍說Asc((Chr(65) <= Chr(90)))
(之間的AZ),也可以說(如果我的輸入包含任何這些值在6個字符,以返回true。不斷收到重載決議並希望知道如何正確的代碼,以便這些變量是準確的。
我正在尋求我的程序幫助。我有一個用戶輸入6位數字;這些輸入必須是字母數字。我已經完成了數字的TryParse
方法,但是我正在查找字符串是否包含alpha的驗證。VB確定字符串中的值
我知道你必須使用ASC
,但我不確定如何開發一個範圍說Asc((Chr(65) <= Chr(90)))
(之間的AZ),也可以說(如果我的輸入包含任何這些值在6個字符,以返回true。不斷收到重載決議並希望知道如何正確的代碼,以便這些變量是準確的。
這是使用正則表達式
Dim input = ...
If Regex.IsMatch(input, "^\w+$") AndAlso input.Length = 6 Then
' It's a match
Else
' It's not a match
End If
這將匹配只由任意字母串的好地方長度等於6
爲什麼不只是'Regex.IsMatch(input,「^ \ w {6} $」)'? – MarcinJuraszek
@MarcinJuraszek它工作得很好,純粹是一個偏好問題。我儘量保持正則表達式儘可能簡單,爲了達到這個目的,我將長度檢查單獨分開 – JaredPar
您是否有任何證明「{6}'影響性能? – MarcinJuraszek
您可以迭代每個char
並檢查它是否是字母。如果是這樣,請將標誌設置爲true。
Dim containsAlpha Boolean = False
For i As Integer = 0 To input.Length - 1
If Char.IsLetter(input(i)) Then
containsAlpha = True
Exit For
End If
Next
Char.IsLetter將匹配Unicode的字母,所以不只是拉美A-Z(這可能是也可能不是你真正想要的)。
我希望它能夠在6個字符內選擇a-z的範圍。所以如果1,2,3,4,5或6中的任何一個值是一個aplha字符(這將返回true。這就是你的例子做的沒有? – user2232604
是的,我的例子會這樣做,但它也會選擇字母來自其他語言的unicode字符,例如歐米茄的希臘大寫字母http://www.fileformat.info/info/unicode/char/1ffc/index.htm如果您想將其限制爲拉丁字母中的az,那麼JaredPar的答案將起作用但如果你不介意來自非英語語言的信件,那麼你可以使用這種方法。 – keyboardP
這聽起來像是一個正則表達式的工作 –