어제 오늘 내일

[Java String] String.indexOf() – 문자열에서 위치 찾기 본문

IT/Java

[Java String] String.indexOf() – 문자열에서 위치 찾기

hi.anna 2025. 8. 26. 02:28

문자열에서 특정 문자나 문자열이 어느 위치에 있는지 알고 싶을 때는 indexOf() 메서드를 사용합니다.
검색된 위치는 인덱스로 반환되며, 없으면 -1을 반환합니다.

 

1. 기본 사용법

public int indexOf(int ch)
public int indexOf(int ch, int fromIndex)
public int indexOf(String str)
public int indexOf(String str, int fromIndex)
  • ch: 찾을 문자(유니코드 값)
  • str: 찾을 문자열
  • fromIndex: 검색을 시작할 위치 (생략하면 처음부터 검색)
String text = "Hello Java";

System.out.println(text.indexOf('H'));   // 0
System.out.println(text.indexOf("Java")); // 6
System.out.println(text.indexOf("Python")); // -1

👉 존재하지 않으면 -1을 반환합니다.

 

2. 특정 위치 이후 검색

fromIndex를 지정하면, 문자열의 특정 위치 이후부터 검색할 수 있습니다.

String text = "banana";

System.out.println(text.indexOf("a"));        // 1
System.out.println(text.indexOf("a", 2));     // 3
System.out.println(text.indexOf("a", 4));     // 5

👉 "banana"에서 "a"는 여러 번 등장하지만, fromIndex를 활용해 원하는 위치 이후의 값만 찾을 수 있습니다.

 

3. 실용적인 예제

파일 확장자 위치 찾기

String file = "report.docx";
int dotIndex = file.indexOf(".");
String ext = file.substring(dotIndex + 1);
System.out.println(ext);
// docx

이메일에서 사용자명 추출

String email = "user@example.com";
int atIndex = email.indexOf("@");
String username = email.substring(0, atIndex);
System.out.println(username);
// user

👉 indexOf()substring()을 조합하면 문자열 파싱이 간단해집니다.

 

4. 여러 번 등장하는 경우

여러 번 등장하는 문자열을 모두 찾고 싶다면, 반복문과 함께 사용할 수 있습니다.

String text = "abracadabra";
int index = text.indexOf("a");

while (index != -1) {
    System.out.println("a found at: " + index);
    index = text.indexOf("a", index + 1);
}

출력:

a found at: 0
a found at: 3
a found at: 5
a found at: 7
a found at: 10

 

5. 정리

  • indexOf()는 문자열에서 특정 문자/문자열 위치를 찾을 때 사용
  • 찾을 수 없으면 -1 반환
  • fromIndex로 검색 시작 위치 지정 가능
  • 확장자 추출, 이메일 파싱 등 다양한 실무 활용 가능

👉 문자열 검색의 기본은 String.indexOf(), 없으면 -1 반환을 기억하자!

 

 

반응형
Comments