[JAVA] 특정 문자 위치 찾기(indexOf/lastIndexOf)

Benjamin·2023년 2월 23일
0

JAVA

목록 보기
18/28

indexOf()

  • indexOf(String str) : 예를들어, "str"일경우 s의 인덱스를 반환
  • indexOf(int ch)
  • indexOf(int ch, int fromIndex) : fromIndex를 시작점으로
  • indexOf(String str, int fromIndex) : fromIndex를 시작점으로

특정 문자나 문자열이 앞에서부터 처음 발견되는 인덱스를 반환
만약 찾지 못했을 경우 "-1"을 반환

예제

public class IndexOfTest{
    public static void main(String[] args){

        String indexOfTestOne = "Hello world";
        String indexOfTestTwo = "         Hello world";     

        System.out.println( indexOfTestOne.indexOf("o") );  // 4
        System.out.println( indexOfTestOne.indexOf("x") );  // -1
        System.out.println( indexOfTestOne.indexOf("o",5) );  // 7
        System.out.println( indexOfTestTwo.indexOf("o") );  // 13
        System.out.println( indexOfTestTwo.indexOf("el") );  // 10

    }
}

.indexOf( "찾을 특정 문자" , "시작할 위치" ) 이런식으로 사용해 주면된다.

"시작할 위치"는 생략이 가능하며, 생략할 경우 0번째 즉 처음부터 찾기 시작한다.

3번째 예시에서보면 "o" 를 5번째 인덱스부터 찾기 시작하라고 했을때, Hello world 에서 두번째 o의 위치를 잡는것이다.

첫번째 o 의 위치가 4이기 때문에 그다음부터 찾기 시작하여 두번째 o의 인덱스를 반환하는 것이다.

그리고 공백 역시 하나하나 전부 위치를 잡고있기때문에 indexOfTestTwo 에서 "o" 를 찾을경우 앞에 빈칸을 전부 포함하여 13번째 위치에 있다는 결과가 반환되는 것이다.

lastIndexOf()

  • lastIndexOf(String str)
  • lastIndexOf(int ch)
  • lastIndexOf(int ch, int fromIndex)
  • lastIndexOf(String str, int fromIndex)

특정 문자나 문자열이 뒤에서부터 처음 발견되는 인덱스를 반환
만약 찾지 못했을 경우 "-1"을 반환

사용법은 indexOf 와 동일

예제

public class IndexOfTest{
    public static void main(String[] args){

        String indexOfTestOne = "Hello world";

        System.out.println( indexOfTestOne.lastIndexOf("o") );  // 7
        System.out.println( indexOfTestOne.lastIndexOf("x") );  // -1
        System.out.println( indexOfTestOne.lastIndexOf("o",5) );  // 4

    }
}

뒤에서부터 찾기 시작해서 값을 반환하는데, 오해하지말아야 할 부분은 오른쪽에서 몇번째 위치하는지를 반환하는게 아니라 말 그대로 '인덱스', 즉 왼쪽에서 몇번째 위치하는지를 반환한다.

또한 시작인덱스를 줄 경우, 오른쪽에서 왼쪽으로 탐색하기때문에 시작점 기준으로 인덱스가 줄어드는 왼쪽부분으로 탐색을 진행한다.


참고
https://mine-it-record.tistory.com/124

0개의 댓글