Java 프로그래밍을 하다 보면 주어진 문자열에 특정 문자가 포함되어 있는지 확인해야 하는 경우가 자주 발생합니다. 이 글에서는 indexOf() 메서드와 toCharArray() 메서드 두 가지 방법을 활용하여 문자열 내에서 원하는 문자를 찾는 방법을 알아보겠습니다.
1. indexOf() 메서드 사용하기
String 클래스의 indexOf() 메서드를 사용하면 문자열에서 특정 문자의 위치를 손쉽게 검색할 수 있습니다. 이 메서드는 지정한 문자가 문자열 내에 존재하면 해당 위치의 인덱스(정수)를 반환하고, 존재하지 않으면 -1을 반환합니다.
따라서 문자열에 특정 문자가 포함되어 있는지 확인하는 절차는 다음과 같습니다.
- 문자열 객체에서 indexOf() 메서드를 호출하면서 확인하려는 문자를 매개변수로 전달합니다.
- 반환값이 -1이 아니면 해당 문자열에 지정한 문자가 포함되어 있다는 의미입니다.
예제 코드
import java.util.Scanner;
public class IndexOfExample {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.println("문자열을 입력하세요: ");
String str = sc.next();
System.out.println("찾을 문자를 입력하세요: ");
char ch = sc.next().toCharArray()[0];
// indexOf() 메서드 호출
int i = str.indexOf(ch);
if(i != -1) {
System.out.println("문자열에 해당 문자가 포함되어 있습니다.");
} else {
System.out.println("문자열에 해당 문자가 포함되어 있지 않습니다.");
}
}
}실행 결과
문자열을 입력하세요: Tutorialspoint 찾을 문자를 입력하세요: t 문자열에 해당 문자가 포함되어 있습니다.
이 방법은 코드가 간결하고 성능도 우수하기 때문에, 단순히 문자 포함 여부만 확인할 때 가장 널리 사용됩니다.
2. toCharArray() 메서드 사용하기
String 클래스의 toCharArray() 메서드는 주어진 문자열을 문자(char) 배열로 변환하여 반환합니다. 이 배열을 순회하면서 각 문자를 직접 비교하는 방식으로 원하는 문자를 찾을 수 있습니다.
확인 절차는 다음과 같습니다.
- 문자열을 toCharArray() 메서드로 문자 배열로 변환합니다.
- 배열의 각 문자를 반복문으로 순회하며 찾으려는 문자와 비교합니다.
- 일치하는 문자가 있으면 해당 문자열에 원하는 문자가 포함된 것입니다.
예제 코드
import java.util.Scanner;
public class FindingCharacter {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.println("문자열을 입력하세요: ");
String str = sc.next();
System.out.println("찾을 문자를 입력하세요: ");
char ch = sc.next().toCharArray()[0];
// 문자열을 char 배열로 변환
char charArray[] = str.toCharArray();
boolean flag = false;
for(int i = 0; i < charArray.length; i++) {
if(charArray[i] == ch) {
flag = true;
break;
}
}
if(flag) {
System.out.println("문자열에 해당 문자가 포함되어 있습니다.");
} else {
System.out.println("문자열에 해당 문자가 포함되어 있지 않습니다.");
}
}
}실행 결과
문자열을 입력하세요: tutorialspoint 찾을 문자를 입력하세요: T 문자열에 해당 문자가 포함되어 있습니다.
두 방법의 비교 및 정리
| 구분 | indexOf() 메서드 | toCharArray() 메서드 |
|---|---|---|
| 코드 간결성 | 매우 간결 | 반복문 작성 필요 |
| 추가 정보 | 문자의 위치(인덱스)까지 반환 | 포함 여부만 확인 가능 |
| 활용 범위 | 단순 검색에 적합 | 복잡한 문자 단위 처리에 유리 |
단순히 문자 포함 여부만 확인한다면 indexOf() 메서드가 가장 효율적이며, 문자의 위치 정보가 필요하거나 각 문자에 대한 추가 로직을 수행해야 한다면 toCharArray() 메서드를 활용하는 것이 좋습니다. 상황에 맞는 적절한 방법을 선택하여 사용하시기 바랍니다.