[Java] 문자열 위치 찾기 (indexOf/lastIndexOf)
May 15, 2024
문자열에서 특정 문자열의 위치(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