2013-04-01 2 views
0

내 프로그램에 대한 지원을 요청합니다. 사용자가 6 자리 숫자를 입력했습니다. 이 중 입력은 영숫자 여야합니다. 이미 숫자에 대한 TryParse 메서드를 수행했지만 문자열에 알파가 포함되어 있는지 확인하고 있습니다.VB에서 문자열 내의 값을 결정합니다.

ASC을 사용해야하지만 범위를 개발하는 방법 (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입니다.
+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

유니 코드를 영문자와 일치하므로 것뿐만 아니라 라틴어 A-Z (이 수도 있고 당신이 실제로 원하는 것을하지 않을 수 있습니다).

+0

나는 6 자 이내에서 a-z의 범위를 선택하고 싶다. 그래서 만약 1,2,3,4,5 또는 6 값이 aplha 문자라면 (이것은 true를 반환 할 것입니다.) 당신의 예제는 아무런 일도하지 않고 있습니다. – user2232604

+0

예를 들어 설명 하겠지만, Omega의 그리스 대문자와 같은 다른 언어의 유니 코드 문자 http://www.fileformat.info/info/unicode/char/1ffc/index.htm 라틴 문자로 az로 제한하려는 경우 JaredPar의 대답이 작동합니다 하지만 영어가 아닌 언어의 글자를 신경 쓰지 않는다면이 방법을 사용할 수 있습니다. – keyboardP