StringBuilder 특정 문자열의 위치 가져오는 방법
이번 포스팅은 StringBuilder 클래스에서 제공하는 indexOf() 메서드와 lastIndexOf() 메서드를 사용하여 특정 문자열의 위치를 가져오는 방법을 소개합니다.
방법 1. 앞에서부터 검색 - indexOf 메서드
StringBuilder 클래스는 특정 문자열을 앞에서부터 검색하는 indexOf() 메서드를 제공합니다.
특정 문자열이 존재하면 인덱스를 반환하며, 존재하지 않으면 -1을 반환합니다.
예제 1. 기본 사용 방법
다음 예제는 StringBuilder에 문자열 "Java"와 "JavaScript"가 존재하는지 앞에서부터 검색합니다.
public static void main(String args[]) {
StringBuilder sb =
new StringBuilder("Hello, Java! Hello, Java");
System.out.println("문자열 \"Java\"의 위치? " +
sb.indexOf("Java"));
System.out.println("문자열 \"JavaScript\"의 위치? " +
sb.indexOf("JavaScript"));
}
[실행 결과]
문자열 "Java"의 위치? 7
문자열 "JavaScript"의 위치? -1
StringBuilder에 문자열 "Java"가 두 개 존재하지만, indexOf() 메서드는 앞에서부터 검색하므로 맨 앞의 문자열 "Java"의 위치를 반환합니다.
문자열 "JavaScript"는 존재하지 않으므로 -1을 반환합니다.
예제 2. 검색 위치 설정
특정 위치부터 문자열을 검색하고 싶은 경우 검색 위치를 설정할 수 있습니다.
indexOf() 메서드의 두 번째 매개변수에 검색 위치를 전달합니다.
다음 예제는 검색 위치를 3과 8로 설정 후 문자열 "Java"가 존재하는지 검색합니다.
public static void main(String args[]) {
StringBuilder sb =
new StringBuilder("Hello, Java! Hello, Java");
System.out.println("Index 3부터 문자열 \"Java\"를 검색: " +
sb.indexOf("Java", 3));
System.out.println("Index 8부터 문자열 \"Java\"를 검색: " +
sb.indexOf("Java", 8));
}
[실행 결과]
Index 3부터 문자열 "Java"를 검색: 7
Index 8부터 문자열 "Java"를 검색: 20
방법 2. 뒤에서부터 검색 - lastIndexOf 메서드
StringBuilder 클래스는 특정 문자열을 뒤에서부터 검색하는 indexOf() 메서드를 제공합니다.
특정 문자열이 존재하면 인덱스를 반환하며, 존재하지 않으면 -1을 반환합니다.
예제 1. 기본 사용 방법
다음 예제는 StringBuilder에 문자열 "Java"와 "JavaScript"가 존재하는지 뒤에서부터 검색합니다.
public static void main(String args[]) {
StringBuilder sb =
new StringBuilder("Hello, Java! Hello, Java");
System.out.println("문자열 \"Java\"의 위치? " +
sb.lastIndexOf("Java"));
System.out.println("문자열 \"JavaScript\"의 위치? " +
sb.lastIndexOf("JavaScript"));
}
[실행 결과]
문자열 "Java"의 위치? 20
문자열 "JavaScript"의 위치? -1
예제 2. 검색 위치 설정
특정 위치부터 문자열을 검색하고 싶은 경우 검색 위치를 설정할 수 있습니다.
lastIndexOf() 메서드의 두 번째 매개변수에 검색 위치를 전달합니다.
다음 예제는 검색 위치를 30과 15로 설정 후 문자열 "Java"가 StringBuilder에 존재하는지 뒤에서부터 검색합니다.
public static void main(String args[]) {
StringBuilder sb =
new StringBuilder("Hello, Java! Hello, Java");
System.out.println("Index 30부터 문자열 \"Java\"를 역으로 검색: " +
sb.lastIndexOf("Java", 30));
System.out.println("Index 30부터 문자열 \"Java\"를 역으로 검색: " +
sb.lastIndexOf("Java", 15 ));
}
[실행 결과]
Index 30부터 문자열 "Java"를 역으로 검색: 20
Index 30부터 문자열 "Java"를 역으로 검색: 7
lastIndexOf() 메서드의 두 번째 매개변수에 문자열의 길이를 초과한 값을 전달하면, 에러가 발생하지 않고 문자열 마지막 위치부터 역으로 검색합니다.
방법 3. 특정 문자열이 여러 개인 경우
StringBuilder에 특정 문자 또는 문자열이 여러 개인 경우가 있을 수 있습니다.
특정 문자 또는 문자열의 모든 위치를 찾으려면 StringBuilder를 순회하여 특정 문자열의 위치를 Integer 타입의 List에 할당합니다.
다음 예제는 StringBuilder에서 문자열 "Java"가 존재하는 모든 위치를 콘솔에 출력합니다.
public static void main(String args[]) {
StringBuilder sb = new StringBuilder("Hello, Java! Hello, JavaScript");
String specificString = "Java";
List<Integer> intList = new ArrayList<>();
int index = sb.indexOf(specificString);
while(index > -1) {
intList.add(index);
index = sb.indexOf(specificString, index + 1);
}
System.out.println(Arrays.toString(intList.toArray()));
}
[실행 결과]
[7, 20]
'Java > 문자열' 카테고리의 다른 글
[Java]Booelan을 문자열로 변환(Boolean to String) (0) | 2022.09.02 |
---|---|
[Java]문자열을 Boolean으로 변환(String to Boolean) (0) | 2022.09.02 |
[Java]문자 타입의 List를 문자열로 변환하는 방법 (0) | 2022.08.19 |
[Java]특정 위치의 문자 변경하는 방법 (0) | 2022.08.19 |
[Java]StringBuilder 마지막 문자 제거하는 방법 (0) | 2022.08.19 |
댓글