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()는 영어뿐 아니라 유니코드 기반의 다양한 언어 문자도 지원한다는 점도 기억해두면 좋습니다.