어제 오늘 내일

[Java String] String.lastIndexOf() – 문자열 뒤에서 검색하기 본문

IT/Java

[Java String] String.lastIndexOf() – 문자열 뒤에서 검색하기

hi.anna 2025. 9. 15. 02:30

indexOf()는 문자열의 앞에서부터 검색하지만, 경우에 따라서는 뒤에서부터 찾는 것이 더 편리할 때가 있습니다.
이럴 때는 lastIndexOf()를 사용합니다.

 

1. 기본 사용법

public int lastIndexOf(int ch)
public int lastIndexOf(int ch, int fromIndex)
public int lastIndexOf(String str)
public int lastIndexOf(String str, int fromIndex)
  • ch: 찾을 문자(유니코드 값)
  • str: 찾을 문자열
  • fromIndex: 검색 시작 위치(이 인덱스부터 거꾸로 탐색)
  • 찾지 못하면 -1 반환
String text = "Hello Java Java";

System.out.println(text.lastIndexOf("Java")); // 11
System.out.println(text.lastIndexOf("o"));    // 4

👉 "Java"가 두 번 있지만, 뒤에서 검색했기 때문에 마지막 위치(11)를 반환합니다.

 

2. 특정 위치 기준으로 검색하기

fromIndex를 주면, 그 인덱스부터 거꾸로 탐색을 시작합니다.

String text = "banana";

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

👉 "banana"에서 "a"는 여러 번 등장하지만, 뒤에서부터 위치를 좁혀갈 수 있습니다.

 

3. 실용적인 활용 예제

파일명과 확장자 분리

String file = "archive.backup.zip";
int dotIndex = file.lastIndexOf(".");
String ext = file.substring(dotIndex + 1);
System.out.println(ext);
// zip

👉 확장자가 여러 개 있더라도 마지막 점(.) 위치를 기준으로 정확히 추출할 수 있습니다.

경로에서 파일명 추출

String path = "C:/Users/John/Documents/report.pdf";
int slashIndex = path.lastIndexOf("/");
String fileName = path.substring(slashIndex + 1);
System.out.println(fileName);
// report.pdf

👉 파일 경로나 URL에서 마지막 구분자 이후 문자열을 뽑을 때 매우 자주 쓰입니다.

 

4. indexOf vs lastIndexOf 차이

String text = "abracadabra";

System.out.println(text.indexOf("a"));      // 0
System.out.println(text.lastIndexOf("a"));  // 10
  • indexOf() → 앞에서부터 검색 → 첫 번째 등장 위치
  • lastIndexOf() → 뒤에서부터 검색 → 마지막 등장 위치

👉 서로 보완적인 관계로, 상황에 따라 적절히 선택하면 됩니다.

 

5. 정리

  • lastIndexOf()는 문자열을 뒤에서부터 검색
  • 찾는 값이 없으면 -1 반환
  • 확장자 추출, 파일 경로 처리 등 실무에서 유용
  • indexOf()와 쌍으로 알아두면 문자열 처리에 강력

👉 문자열 뒤에서 검색이 필요하다면 String.lastIndexOf()가 해답이다!

 

 

반응형
Comments