Java/문자열

[Java]문자열 위치 찾는 방법

DevStory 2022. 8. 13.

문자열 위치 찾는 방법

이번 포스팅은 문자열에서 특정 문자열의 위치를 찾기 위해 다음 세 가지 방법을 소개합니다.

 

세 가지 방법

- indexOf(): 문자열의 처음 위치에서 특정 문자열의 위치를 찾습니다.

- lastIndexOf(): 문자열의 마지막 위치에서 특정 문자열의 위치를 찾습니다.

- 정규식 사용: 문자열에서 특정 문자열이 두 개 이상인 경우 문자열의 모든 위치를 찾습니다.


문자열 처음 위치에서 찾는 방법

문자열의 처음 위치에서 특정 문자열의 위치를 찾기 위해 indexOf() 메서드를 사용합니다.

 

indexOf()

- 문자열의 처음 위치에서 특정 문자열을 검색 후 위치(index)를 반환합니다.

- 문자열에서 특정 문자열이 두 개 이상인 경우 시작 위치와 가장 가까운 위치를 반환합니다.

- 특정 문자열이 존재하지 않는 경우 -1을 반환합니다.

 

다음 예제는 문자열에서 "Java"라는 문자열의 위치를 탐색합니다.

public static void main(String args[]) {
  String strValue = "Subject: Java, JavaScript, React, Node.JS";

  int findIndex = strValue.indexOf("Java");

  System.out.println("문자열 \"Java\"의 위치: " + findIndex);
}

[실행 결과]

문자열 "Java"의 위치: 9

 

문자열을 특정 위치에서 시작하여 검색하고 싶은 경우 indexOf() 메서드의 두 번째 매개변수로 특정 위치를 전달합니다.

 

다음 예제는 문자열 10번째 인덱스부터 "Java"라는 문자열의 위치를 찾습니다.

public static void main(String args[]) {
  String strValue = "Subject: Java, JavaScript, React, Node.JS";

  int findIndex = strValue.indexOf("Java", 10);

  System.out.println("문자열 \"Java\"의 위치: " + findIndex);
}

[실행 결과]

문자열 "Java"의 위치: 15

문자열 마지막 위치에서 찾는 방법

문자열의 마지막 위치에서 특정 문자열의 위치를 찾기 위해 lastIndexOf() 메서드를 사용합니다.

 

lastIndexOf()

- 문자열의 마지막 위치에서 특정 문자열을 검색 후 위치(index)를 반환합니다.

- 문자열에서 특정 문자열이 두 개 이상인 경우 마지막 위치와 가장 가까운 위치를 반환합니다.

- 특정 문자열이 존재하지 않는 경우 -1을 반환합니다.

 

다음 예제는 문자열에서 "Java"라는 문자열의 위치를 마지막 위치에서부터 탐색합니다.

public static void main(String args[]) {
  String strValue = "Subject: Java, JavaScript, React, Node.JS";

  int findIndex = strValue.lastIndexOf("Java");

  System.out.println("문자열 \"Java\"의 위치: " + findIndex);
}

[실행 결과]

문자열 "Java"의 위치: 15

 

문자열을 특정 위치에서 반대방향으로 검색하고 싶은 경우 lastIndexOf() 메서드의 두 번째 매개변수에 특정 위치를 전달합니다.

 

다음 예제는 문자열 14번째 인덱스부터 "Java"라는 문자열을 반대방향으로 탐색합니다.

public static void main(String args[]) {
  String strValue = "Subject: Java, JavaScript, React, Node.JS";

  int findIndex = strValue.lastIndexOf("Java", 14);

  System.out.println("문자열 \"Java\"의 위치: " + findIndex);
}

[실행 결과]

문자열 "Java"의 위치: 9

특정 문자열이 여러 개인 경우

문자열에서 특정 문자열이 여러 개인 경우 모든 위치를 알아내야 할 수도 있습니다.

 

특정 문자열의 모든 위치를 찾기 위해 다음 두 가지 방법을 사용합니다.

 

두 가지 방법

- 정규식

- 반복문과 indexOf() 메서드


정규식 활용

다음 예제는 Matcher, Pattern 클래스를 활용하여 특정 문자열이 포함된 모든 위치를 콘솔에 출력합니다.

public static void main(String args[]) {
  String strValue = "Subject: Java, JavaScript, React, Node.JS";

  Matcher matcher = Pattern.compile("Java").matcher(strValue);
  while (matcher.find()) {
    System.out.println("문자열 \"Java\"의 위치: " + matcher.start());
  }
}

[실행 결과]

문자열 "Java"의 위치: 9
문자열 "Java"의 위치: 15

반복문 활용

다음 예제는 while문과 indexOf() 메서드를 사용하여 특정 문자열이 포함된 모든 위치를 콘솔에 출력합니다.

public static void main(String args[]) {
  String strValue = "Subject: Java, JavaScript, React, Node.JS";

  int findIndex = strValue.indexOf("Java");
  
  while (findIndex >= 0) {
    System.out.println("문자열 \"Java\"의 위치: " + findIndex);
    findIndex = strValue.indexOf("Java", findIndex + 1);
  }
}

[실행 결과]

문자열 "Java"의 위치: 9
문자열 "Java"의 위치: 15
반응형

댓글