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

Java에서 알파벳 문자열을 검증하는 방법 완벽 가이드

Java에서 문자열이 알파벳(영문자)으로만 구성되어 있는지 검증하는 방법은 크게 두 가지가 있습니다. 첫 번째는 문자열의 각 문자를 영어 알파벳 대소문자와 하나씩 비교하는 방식이고, 두 번째는 정규 표현식(Regular Expression)을 활용하는 방식입니다.

방법 1: 각 문자를 직접 비교하는 방식

아래 예제는 사용자로부터 문자열(이름)을 입력받은 후, 문자열의 각 문자를 영어 알파벳(a~z, A~Z)과 비교하여 해당 문자열이 올바른 이름인지 판별합니다.

import java.util.Scanner;
public class ValidatingString {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter your name: ");
        String str = sc.next();
        boolean flag = true;
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            if (!(ch >= 'a' && ch <= 'z'|| ch >= 'A' && ch <= 'Z')) {
                flag = false;
            }
        }
        if(flag)
            System.out.println("Given string is a proper name.");
        else
            System.out.println("Given string is not a proper name.");
    }
}

실행 결과 1

숫자가 포함된 문자열을 입력한 경우 올바르지 않은 이름으로 판별됩니다.

Enter your name:
krishna45
Given string is not a proper name.

실행 결과 2

알파벳으로만 구성된 문자열을 입력한 경우 올바른 이름으로 판별됩니다.

Enter your name:
kasyap
Given string is a proper name.

방법 2: 정규 표현식을 활용하는 방식

정규 표현식을 사용하면 반복문 없이 더 간결하게 검증할 수 있습니다. 아래 예제는 matches() 메서드와 정규 표현식 ^[a-zA-Z]*$를 사용하여 입력받은 문자열이 알파벳으로만 이루어져 있는지 확인합니다.

import java.util.Scanner;
public class ValidatingString2 {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter your name: ");
        String str = sc.next();
        if((!str.equals(null))&&str.matches("^[a-zA-Z]*$"))
            System.out.println("Given string is a proper name.");
        else
            System.out.println("Given string is not a proper name.");
    }
}

실행 결과 1

Enter your name:
krishna45
Given string is not a proper name.

실행 결과 2

Enter your name:
kasyap
Given string is a proper name.

두 방식의 차이점과 활용 팁

반복문을 이용한 방식은 로직이 명확하게 드러나 학습 목적에 적합하며, 특정 조건을 세부적으로 제어해야 할 때 유용합니다. 반면 정규 표현식 방식은 코드가 간결하고 유지보수가 쉬워 실무에서 널리 사용됩니다.

참고로 Java 8 이상에서는 스트림 API를 활용해 str.chars().allMatch(Character::isLetter)와 같이 더욱 현대적인 방식으로도 검증할 수 있으며, Character.isLetter()는 영어뿐 아니라 유니코드 기반의 다양한 언어 문자도 지원한다는 점도 기억해두면 좋습니다.