Skip to content

문자 판별 메서드 (isDigit, isLetter) #10

@SeoMiYoung

Description

@SeoMiYoung

코딩테스트에서 문자열 파싱(Parsing) 문제에서 자주 쓰이는 문자 판별 메서드(Character 클래스) 3대장을 정리해 드립니다.

if (c >= '0' && c <= '9') 처럼 아스키코드로 짜도 되지만, 메서드를 쓰면 가독성이 훨씬 좋아집니다.

문자열 안에 섞여 있는 게 숫자인지? 알파벳인지? 확인해야 할 때가 많습니다.
이때 String 클래스가 아니라 Character 클래스의 static 메서드를 써야 한다는 점이 핵심입니다.

1. 숫자 판별: Character.isDigit()

해당 문자가 '0' ~ '9' 사이의 숫자인지 확인합니다.

char c1 = '5';
char c2 = 'a';

System.out.println(Character.isDigit(c1)); // true
System.out.println(Character.isDigit(c2)); // false
  • 활용: 문자열에서 숫자만 추출해서 더하거나 정렬할 때 필수.

2. 알파벳 판별: Character.isLetter()

해당 문자가 알파벳(한글 포함 문자)인지 확인합니다.

char c1 = 'A';
char c2 = '가'; // 한글도 문자로 취급
char c3 = '1';

System.out.println(Character.isLetter(c1)); // true
System.out.println(Character.isLetter(c2)); // true (주의!)
System.out.println(Character.isLetter(c3)); // false

3. 숫자 + 알파벳 몽땅: Character.isLetterOrDigit()

특수문자나 공백을 제외하고, **"의미 있는 문자(숫자+영어)"**만 남길 때 가장 많이 씁니다.
(예: 팰린드롬 문제에서 Hello, World! -> HelloWorld로 만들 때)

char c1 = '!';
char c2 = 'a';
char c3 = '7';

System.out.println(Character.isLetterOrDigit(c1)); // false (특수문자)
System.out.println(Character.isLetterOrDigit(c2)); // true
System.out.println(Character.isLetterOrDigit(c3)); // true

🚨 [주의] 사용법 실수 1위

char는 객체가 아니라 기본형(primitive type)입니다. 그래서 변수명.메서드() 형태로 못 씁니다.
반드시 Character.메서드(변수) 형태로 써야 합니다.

char c = 'A';

// ❌ 틀린 방법 (컴파일 에러)
// if (c.isDigit()) { ... } 

// ✅ 맞는 방법
if (Character.isDigit(c)) { ... }

⚡ 3줄 요약

  1. 숫자인지 궁금하면? 👉 Character.isDigit(c)
  2. **문자(알파벳)**인지 궁금하면? 👉 Character.isLetter(c)
  3. 특수문자 거르고 숫자/문자만 필요하면? 👉 Character.isLetterOrDigit(c)

+) 아스키코드 방식 (참고)

메서드가 기억 안 나면 아스키코드 범위로 직접 비교해도 됩니다. (속도는 아주 미세하게 더 빠름)

char c = '5';

// 숫자 판별 (0 ~ 9)
if (c >= '0' && c <= '9') { ... }

// 알파벳 소문자 판별 (a ~ z)
if (c >= 'a' && c <= 'z') { ... }

// 알파벳 대문자 판별 (A ~ Z)
if (c >= 'A' && c <= 'Z') { ... }

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions