Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 문자열의 특정 문자가 숫자인지 문자인지 확인하는 방법

Character 클래스는 Object 클래스의 하위 클래스로, 기본 타입(primitive)인 char 값을 하나의 객체로 감싸는 래퍼(Wrapper) 클래스입니다. Character 타입의 객체는 char 타입의 단일 필드(single field)를 포함하고 있습니다.

문자열에서 주어진 문자가 숫자인지 확인하려면 Character 클래스의 isDigit() 메서드를 사용하면 됩니다. isDigit() 메서드는 정적(static) 메서드로, 지정된 문자가 숫자(digit)인지 여부를 판별하여 true 또는 false를 반환합니다. 따라서 isDigit()가 false를 반환하는 경우 해당 문자를 문자(letter)로 판단할 수 있습니다.

예제 코드

public class CharacterIsNumberOrDigitTest {
    public static void main(String[] args) {
        String str = "Tutorials123";
        for(int i = 0; i < str.length(); i++) {
            Boolean flag = Character.isDigit(str.charAt(i));
            if(flag) {
                System.out.println("'"+ str.charAt(i)+"'은(는) 숫자입니다");
            }
            else {
                System.out.println("'"+ str.charAt(i)+"'은(는) 문자입니다");
            }
        }
    }
}

실행 결과

'T'은(는) 문자입니다
'u'은(는) 문자입니다
't'은(는) 문자입니다
'o'은(는) 문자입니다
'r'은(는) 문자입니다
'i'은(는) 문자입니다
'a'은(는) 문자입니다
'l'은(는) 문자입니다
's'은(는) 문자입니다
'1'은(는) 숫자입니다
'2'은(는) 숫자입니다
'3'은(는) 숫자입니다

동작 원리

위 예제에서는 문자열 "Tutorials123"을 대상으로 charAt() 메서드를 통해 한 글자씩 가져온 후, 각 문자를 Character.isDigit()에 전달하여 검사합니다. 인덱스 0부터 8까지의 알파벳 문자들은 false를 반환하여 문자로 출력되고, 인덱스 9부터 11까지의 '1', '2', '3'은 true를 반환하여 숫자로 출력됩니다.

참고: isLetter() 메서드

반대로 해당 문자가 알파벳 문자인지 명시적으로 확인하고 싶다면 Character.isLetter() 메서드를 사용할 수도 있습니다. 두 메서드를 함께 활용하면 다음과 같이 더 명확한 조건 분기가 가능합니다.

char ch = 'A';
if(Character.isLetter(ch)) {
    System.out.println(ch + "은(는) 문자입니다");
} else if(Character.isDigit(ch)) {
    System.out.println(ch + "은(는) 숫자입니다");
}

또한, 정규표현식을 선호하는 경우 String.matches() 메서드와 "[0-9]" 같은 패턴을 사용하거나, str.chars() 스트림 API를 활용해 필터링하는 방법도 있습니다. 상황에 맞게 적절한 방식을 선택하면 됩니다.