2013-04-01 85 views
0

我正在尋求我的程序幫助。我有一個用戶輸入6位數字;這些輸入必須是字母數字。我已經完成了數字的TryParse方法,但是我正在查找字符串是否包含alpha的驗證。VB確定字符串中的值

我知道你必須使用ASC,但我不確定如何開發一個範圍說Asc((Chr(65) <= Chr(90)))(之間的AZ),也可以說(如果我的輸入包含任何這些值在6個字符,以返回true。不斷收到重載決議並希望知道如何正確的代碼,以便這些變量是準確的。

+0

這聽起來像是一個正則表達式的工作 –

回答

0

這是使用正則表達式

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

+0

爲什麼不只是'Regex.IsMatch(input,「^ \ w {6} $」)'? – MarcinJuraszek

+0

@MarcinJuraszek它工作得很好,純粹是一個偏好問題。我儘量保持正則表達式儘可能簡單,爲了達到這個目的,我將長度檢查單獨分開 – JaredPar

+0

您是否有任何證明「{6}'影響性能? – MarcinJuraszek

0

您可以迭代每個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(這可能是也可能不是你真正想要的)。

+0

我希望它能夠在6個字符內選擇a-z的範圍。所以如果1,2,3,4,5或6中的任何一個值是一個aplha字符(這將返回true。這就是你的例子做的沒有? – user2232604

+0

是的,我的例子會這樣做,但它也會選擇字母來自其他語言的unicode字符,例如歐米茄的希臘大寫字母http://www.fileformat.info/info/unicode/char/1ffc/index.htm如果您想將其限制爲拉丁字母中的az,那麼JaredPar的答案將起作用但如果你不介意來自非英語語言的信件,那麼你可以使用這種方法。 – keyboardP