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

Java charAt() 메서드 완벽 가이드: 문자열에서 특정 문자 추출하기

Java의 charAt() 메서드는 문자열에서 특정 인덱스 위치에 있는 문자를 반환합니다. 문자열의 첫 번째 문자는 인덱스 0을 가지며, charAt()은 단일 문자만 반환할 뿐 문자 범위를 반환하지 않습니다.


Java에서 문자열을 다루다 보면 문자열의 특정 위치에 어떤 문자가 있는지 확인해야 할 때가 있습니다. 바로 이럴 때 charAt() 메서드가 유용합니다. Java의 charAt() 메서드는 문자열에서 특정 위치에 해당하는 문자를 찾는 데 사용됩니다.

예를 들어, 미국 전화 지역번호에 해당하는 지역 정보를 조회하는 프로그램을 작성한다고 가정해 보겠습니다. 이 경우 전화번호가 담긴 문자열에서 처음 세 문자를 가져와야 할 수 있습니다.

이 글에서는 예제를 통해 Java에서 charAt()을 사용하는 방법을 단계별로 살펴보겠습니다.

Java 문자열(String) 기본 복습

문자열은 모든 프로그래밍 언어에서 중요한 데이터 타입입니다. 코드에서 텍스트 기반 데이터를 자유롭게 다룰 수 있게 해주기 때문입니다. Java에서 문자열은 큰따옴표("")로 묶어 표현합니다. Java에서 문자열을 선언하는 예시는 다음과 같습니다.

String company = "Google";

위에서 정의한 company 변수는 다음과 같은 인덱스 값을 가집니다.

Google
012345

첫 번째 문자 'G'의 인덱스는 0이며, 마지막 문자 'e'의 인덱스는 4입니다.

Java charAt 메서드란?

Java에 내장된 문자열 charAt() 메서드는 문자열에서 특정 인덱스 위치에 해당하는 문자를 반환합니다. 첫 번째 문자의 인덱스 값은 0이며, 이후 문자들도 순차적으로 인덱스가 1씩 증가합니다.

문자열의 첫 번째 문자나 아홉 번째 문자를 가져오고 싶을 때 charAt()을 사용하면 됩니다. charAt() 메서드의 기본 문법은 다음과 같습니다.

char = string_name.charAt(index)

charAt()은 매개변수를 하나만 받습니다. 바로 가져오려는 문자의 인덱스 위치입니다.

charAt Java 예제

커피숍을 운영하고 있다고 가정해 보겠습니다. 매출을 높이고 더 많은 고객을 매장으로 유치하기 위한 프로모션의 일환으로, 이름이 'G'로 시작하는 고객에게 5% 할인을 제공하기로 했습니다.

바리스타가 입력한 이름의 첫 글자를 추출하는 프로그램을 만들고 싶습니다. 다음 코드를 사용하면 됩니다.

public class GetFirstLetter {
	public static void main (String[] args) {
		String name = "GRAHAM HENDERSON";
		char letter = name.charAt(0);
		System.out.println("The first letter of " + name + "'s name is " + letter + ".");
	}
}

코드를 실행하면 프로그램은 다음과 같은 결과를 출력합니다.

The first letter of GRAHAM HENDERSON's name is G.

먼저 코드를 담는 GetFirstLetter라는 클래스를 생성합니다. 그다음 고객의 이름을 저장하는 name이라는 Java 변수를 정의합니다. 이 예제에서 고객의 이름은 Graham Henderson입니다. 이름이 잘못 읽히는 일을 방지하기 위해 고객 이름을 모두 대문자로 작성하기로 했습니다.

다음 줄에서는 letter라는 변수를 정의합니다. letter는 단 하나의 문자만 저장하므로 'char' 데이터 타입을 사용했습니다.

이 변수에는 name.charAt(0)의 값을 할당합니다. 이 코드는 문자열의 첫 번째 문자, 즉 인덱스 값 0에 해당하는 문자를 검색합니다. 이 예제에서 charAt() 메서드는 문자 'G'를 반환했습니다.

마지막으로 지정한 인덱스의 문자가 무엇인지 알려주는 메시지를 콘솔에 출력합니다.

다른 위치의 문자 검색하기

문자열의 두 번째 문자를 검색하고 싶다면 코드를 다음과 같이 수정하면 됩니다.

…
String name = "GRAHAM HENDERSON";
		char letter = name.charAt(1);
		System.out.println("The second letter of " + name + "'s name is " + letter + ".");
…

여기서 두 가지를 변경했습니다. 첫째, charAt() 메서드의 인덱스 번호를 1로 바꿨습니다. 이는 문자열의 두 번째 문자를 의미합니다. 둘째, 출력 메시지를 'The first letter of...'에서 'The second letter of...'로 수정했습니다.

이 코드는 'R'을 반환합니다. 반환된 값은 새로운 문자열이며, 원본 문자열은 변경되지 않습니다.

Java String charAt: 문자 출현 횟수 세기 예제

charAt() 메서드의 유용한 활용 사례 중 하나는 출현 횟수 계산(count occurrence) 알고리즘입니다. 출현 횟수 계산 알고리즘은 특정 값이 문자열, 리스트 등 반복 가능한 객체 안에 몇 번 나타나는지 세는 알고리즘입니다.

다시 커피숍 이야기로 돌아가 보겠습니다. 'G'가 이름의 첫 글자로 너무 흔하다 보니 할인을 청구하는 고객이 너무 많아졌습니다. 그래서 프로모션 조건을 변경하여, 이름에 'G'가 두 개를 초과하여 포함된 경우에만 구매 금액의 5% 할인을 제공하기로 했습니다.

고객이 할인 대상인지 판별하는 데 사용할 수 있는 코드는 다음과 같습니다.

class GetLetters {
	public static void main (String[] args) {
		String name = "GRAHAM HENDERSON";

		int counter = 0;

		for (int i = 0; i <= name.length() - 1; i++) {
if (name.charAt(i) == 'G') {
counter++; 
}
}
		System.out.println(name + "'s" + " name contains " + counter + "G.");
	}
}

코드를 실행하면 프로그램은 다음과 같은 결과를 출력합니다.

GRAHAM HENDERSON's name contains 1 G.

먼저 프로그램 코드를 담는 GetLetters라는 클래스를 정의합니다. 그다음 고객의 이름을 저장하는 name이라는 변수를 정의합니다.

문자열에 문자 'G'가 몇 번 나타나는지 추적하는 counter라는 변수를 정의했습니다. 그런 다음 name 변수의 각 문자를 하나씩 확인하는 Java for 루프를 생성했습니다.

name.length() - 1은 루프가 name 문자열의 모든 문자를 모두 지나갈 때까지 계속 실행됨을 의미합니다.

다음으로 if 문을 정의했습니다. 이 문은 인덱스 위치 i에 있는 문자가 'G'와 같은지 검사합니다. 여기서 i는 루프가 실행될 때마다 1씩 증가하는 for 루프의 변수입니다.

이 비교는 대소문자를 구분한다는 점에 유의해야 합니다. 만약 이름이 소문자로 저장되어 있다면 name.charAt(i) == 'G' 조건은 절대 참이 되지 않습니다.

인덱스 위치 i의 문자가 'G'와 같으면 counter가 1씩 증가합니다. 코드의 마지막 줄에서는 문자 'G'가 고객 이름에 몇 번 나타나는지 알려주는 메시지를 콘솔에 출력하도록 지시합니다.

마무리

Java의 charAt() 메서드는 문자열 내 특정 인덱스 값에 위치한 문자를 검색합니다. 예를 들어 charAt()을 사용하면 문자열의 10번째 문자나 15번째 문자를 손쉽게 가져올 수 있습니다.

이 글에서는 Java에서 charAt() 메서드를 사용하는 방법을 알아보았습니다. charAt() 메서드의 사용 예제를 단계별로 살펴보았고, Java 출현 횟수 계산 알고리즘에서 charAt()을 활용하는 방법도 함께 다루었습니다.

이제 Java에서 charAt()을 전문가처럼 활용할 준비가 되었습니다! Java에 대해 더 배우고 싶다면 Java 코딩 가이드를 확인해 보세요.