문자열에서 특정 문자열의 위치(index)를 찾는 함수는 indexOf()lastIndexOf()가 있습니다.

이 함수들을 사용하여 문자열 위치를 찾는 방법에 대해서 알아보겠습니다.

1. indexOf(), lastIndexOf()

두개의 함수는 문자 또는 문자열을 찾고 index를 리턴하지만, 탐색 방향이 다릅니다.

  • indexOf() : 문자열의 왼쪽에서 오른쪽 방향으로 문자를 찾고 문자열의 첫 글자 Index 리턴
  • lastIndexOf() : 문자열의 오른쪽에서 왼쪽 방향으로 문자를 찾고 문자열의 첫 글자 Index 리턴

문자(char)의 index 찾기

indexOf()는 왼쪽부터 탐색하며, 가장 먼저 찾은 문자의 Index를 리턴합니다.

  • 아래 예제는 문자열의 왼쪽에서 오른쪽 방향으로 문자 'o'를 찾고, Index 4를 리턴
  • 문자를 못찾으면 -1을 리턴
public class Example {

    public static void main(String[] args) {

        String text = "Hello, World!";
        char targetChar = 'o';

        int index = text.indexOf(targetChar);
        if (index != -1) {
            System.out.println("'" + targetChar + "' found at index " + index);
        } else {
            System.out.println("'" + targetChar + "' not found in the text.");
        }
    }
}

Output:

'o' found at index 4

lastIndexOf()는 오른쪽에서 왼쪽 방향으로 탐색하며, 가장 먼저 찾은 문자의 Index를 리턴합니다.

  • 아래 예제는 오른쪽에서 왼쪽 방향으로 'o'를 찾고, Index 8을 리턴
public class Example {

    public static void main(String[] args) {

        String text = "Hello, World!";
        char targetChar = 'o';

        int index = text.lastIndexOf(targetChar);
        if (index != -1) {
            System.out.println("'" + targetChar + "' found at index " + index);
        } else {
            System.out.println("'" + targetChar + "' not found in the text.");
        }
    }
}

Output:

'o' found at index 8

문자열(String)의 index 찾기

indexOf()는 문자 1개 뿐만 아니라, 문자열도 찾을 수 있습니다.

  • indexOf()는 왼쪽부터 탐색하며, 가장 먼저 찾은 문자열의 첫 문자 Index를 리턴
  • 아래 예제는 왼쪽에서 문자 'World'를 찾고, Index 7 리턴
  • 문자를 못찾으면 -1을 리턴
public class Example {

    public static void main(String[] args) {

        String text = "Hello, World, Java, World";
        String targetStr = "World";

        int index = text.indexOf(targetStr);
        if (index != -1) {
            System.out.println("'" + targetStr + "' found at index " + index);
        } else {
            System.out.println("'" + targetStr + "' not found in the text.");
        }
    }
}

Output:

'World' found at index 7

lastIndexOf()도 문자열의 인덱스를 찾을 수 있습니다.

  • lastIndexOf()는 오른쪽부터 탐색하며, 가장 먼저 찾은 문자열의 첫 문자 Index를 리턴
  • 아래 예제는 오른쪽에서 왼쪽 방향으로 문자 'World'를 찾고, Index 20 리턴
  • 문자를 못찾으면 -1을 리턴
public class Example {

    public static void main(String[] args) {

        String text = "Hello, World, Java, World";
        String targetStr = "World";

        int index = text.lastIndexOf(targetStr);
        if (index != -1) {
            System.out.println("'" + targetStr + "' found at index " + index);
        } else {
            System.out.println("'" + targetStr + "' not found in the text.");
        }
    }
}

Output:

'World' found at index 20

2. 특정 Index 부터 문자/문자열 찾기

문자열의 특정 Index 부터 문자/문자열을 찾을 수 있습니다.

두 함수는 아래와 같이 찾으려는 String 뿐만 아니라, fromIndex도 인자로 전달할 수 있습니다. fromIndex를 전달하면, 그 Index부터 문자/문자열을 찾습니다.

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

아래 예제는 index 10부터 문자열을 찾는 예제입니다.

  • indexOf(targetStr, 10) : Index 10부터 문자열 찾음
  • lastIndexOf(targetStr, 10) : 문자열의 뒤에서(오른쪽) Index 10개를 제외하고, 그 다음 Index부터 문자열 찾음
public class Example {

    public static void main(String[] args) {

        String text = "Hello, World, Java, World";
        String targetStr = "World";

        int index = text.indexOf(targetStr, 10);
        if (index != -1) {
            System.out.println("'" + targetStr + "' found at index " + index);
        } else {
            System.out.println("'" + targetStr + "' not found in the text.");
        }

        index = text.lastIndexOf(targetStr, 10);
        if (index != -1) {
            System.out.println("'" + targetStr + "' found at index " + index);
        } else {
            System.out.println("'" + targetStr + "' not found in the text.");
        }
    }
}

Output:

'World' found at index 20
'World' found at index 7