Creative Commons License

Microsoft .NET

닷넷!시작하기
닷넷! Ver 2.0~
닷넷!스킬업
웹개발
윈폼개발
실용모듈개발
Tip & Tech
하루 한 문법

Microsoft .NET 개발자들을 위한 공간입니다. 기초강의에서 부터 고급 기술 정보 및 팁등을 다루도록 하겠습니다.

.

실용모듈개발

간단하지만 실용적인 기능을 구현한 모듈 저작물을 공유하는 공간입니다.

문자열이 모두 숫자타입인가?

작성자 : 박종명
최초 작성일 : 2008-07-04 (금요일)
최종 수정일 : 2008-07-04 (금요일)
조회 수 : 3236

이번에 소개해 드릴 유틸성 모듈은 '문자열이 모두 숫자인가?' 를 판별해 주는 기능을 구현합니다.
역시 아주 간단한 구현입니다.

예를 들어,
보통 가격,나이 같은 정보는 반드시 숫자 형태로 입력을 받아야 합니다.
보통의 응용프로그램에서는 (그게 웹사이트이든 윈도우 응용프로그램이든..) 이러한 사용자의 입력은 TextBox와 같은 입력 컨트롤을 통해 전달받게 됩니다. 

물론 다음의 그림처럼 사용자가 문자자체를 입력할 수 없도록 별도의 입력방식(콤보박스,업다운숫자박스)으로
처리하기도 합니다 (아래 그림은 Gmarket 주문 페이지 일부분을 캡쳐한 화면입니다)

만일 TextBox로 숫자값을 전달 받을 경우에는 TextBox에 글이 입력될 때 발생하는 이벤트에서 방금 입력한 문자가
숫자인지 판별하면 됩니다.
이와 관련된 내용은 다음의 링크에서 확인 바랍니다.
http://mkexdev.net/Article/Content.aspx?parentCategoryID=1&categoryID=22&ID=146

그러나 응용프로그램이 전달 받는 형태가 반드시 위의 사례만 있는 것은 아닐 수 있습니다.

다시말해, 위와 같은 인터페이스를 통해 사용자로부터 입력 받는 것이 아니라,
응용프로그램끼리 데이터를 주고 받을 경우라던지, 응용프로그램 자체에서 생성한 문자라던지, 많은 문자열 가운데
특정 구간의 문자열만 검증해야 된다든지... 등 입력 컨트롤을 통하지 않고 문자열이 전달된다면 컨트롤의 Key 관련 이벤트를 사용할 수 없게 됩니다.

이럴 경우 유용하게 사용될 만한 유틸리티를 만들어 보겠습니다.

요구사항은 다음과 같습니다.
"특정 문자열이 모두 숫자로 작성되었는지 확인을 해 주는 유틸리티를 개발해 주세용~~"

예를들어 다음과 같은 문자열은 모두 혹은 일부 문자가 숫자가 아니기 때문에 문자열이 모두 숫자가 아닌 경우입니다
'홍길동' , '홍2동' , '12동' , '홍12' (숫자 아님 -> false)

다음과 같은 문자열은 모든 문자가 숫자이겠죠.
'35234' (숫자임 -> true)



이를 구현하는 방식도 여러가지가 있을 수 있지만, 저는 정규표현식을 통한 검증을 수행 하도록 하였습니다.
다음이 코드를 보겠습니다. 

public static bool IsNumberUsingRegex(string str)

{

    //결과값 정의(우선 true(숫자)라고 가정함)

    bool result = true;           

 

    //정규표현식(0~9 사이의 숫자만 가능하도록 설정)

    Regex regex = new Regex(@"[0-9]");

 

    //문자열의 문자들을 정규표현식과 하나씩 검증한다.

    //만일 숫자형태가 아닌 문자를 만날경우 그 즉시 검증을 멈추고 false(숫자 아님)를 반환한다

    //그렇지 않고 모든 문자가 정규식과 위배되지 않는다면(숫자형태이면) true(숫자임)가 반환될 것이다

    foreach (char c in str)

    {

        result = regex.IsMatch(c.ToString());

 

        if (!result) break;               

    }

 

    return result;

}

코드 설명은 주석으로 대신합니다.

코드의 개선점이나 더 나은 방법이 있다면, 언제든 공유해 주시면 감솨하겠습니당~~


이름
비밀번호
홈페이지
IQ <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요