자바 indexOf() - 문자열 중 해당문자 위치 찾기

728x90

자바 indexOf().png

indexOf() - 특정 문자나 문자열에서 해당하는 문자의 인덱스 값을 반환하고 찾지 못했을 경우 '-1'을 반환하는 메소드 입니다.

 

indexOf(String s)

indexOf(int i)

indexOf(String s, int startindex)

indexOf(int i, int startindex)

 

lastIndexOf() - 특정 문자나 문자열에서 해당하는 문자를 뒤에서 부터 찾아 인덱스 값을 반환하고 찾지 못했을 경우 '-1'을 반환하는 메소드 입니다.

 

lastIndexOf(String s)

lastIndexOf(int i)

lastIndexOf(String s, int startindex)

lastIndexOf(int i, int startindex)

 

 

indexOf() 예제를 먼저보면

class Main {  
  public static void main(String args[]) { 
    String s = "Hello Hi World";
    String i = "abccdef";
    
    System.out.println(s.indexOf("e")); //1
    System.out.println(s.indexOf("W")); //9
    System.out.println(s.indexOf("w")); //-1
    System.out.println(s.indexOf("l",5)); //12
    System.out.println(s.indexOf(" ")); //5

    System.out.println(i.indexOf(98)); //1
    System.out.println(i.indexOf(99,3)); //3
 
    System.out.println(s.lastIndexOf("l")); //12
    System.out.println(s.lastIndexOf("H",10)); //6
    System.out.println(i.lastIndexOf(99)); //3
    System.out.println(i.lastIndexOf(99,2)); //3
    
  } 
}

 

etc-image-1

si String 이 있습니다.

 

etc-image-2

실행결과를 보면

s라는 문자열에서 'e'의 위치를 찾습니다. 1번째에 위치하므로 1을 출력합니다.

두번째 줄과 세번째 줄을 보시면 대소문자를 구분한다는 것도 알 수 있습니다.

대문자 'W'를 찾았지만 소문자 'w'는 찾지못해 '-1'이 출력됬습니다.

indexOf("찾는문자",시작위치)를 지정할 수 있습니다.

문자열 s에는 l이라는 문자가 3번 들어갑니다. 위치는 2,3,12 번째에 위치합니다.

네번째 줄 출력문을 보면 'l'의 문자를 찾는데 5라는 숫자가 보입니다.

이 숫자는 5번째부터 시작해서 문자를 찾으라는 말입니다. 그래서 5번째 부터 찾아서 2,3 번째 'l'은 지나가고 12번째에 위치에 있는 'l'을 찾아 12를 반환한 것 입니다.

공백의 위치도 찾을 수 있습니다.

 

etc-image-3

이 출력문을 보면 아스키 코드로도 문자의 위치를 찾을 수 있습니다.

문자열 i 는 "abccdef" 입니다. 여기서 아스키코드 98은 'b'입니다. 'a'가 97입니다.

98를 찾으니 1 이라는 인덱스 위치에 존재하는 'b'를 찾았습니다.

여기서도 시작위치를 지정할 수 있습니다. 3번째 위치부터 시작하니 99인 'c'는 2번째에 'c'가 아닌 3번째 'c'를 찾았습다.

 

etc-image-4

lastIndexOf() 도 있습니다.

indexOf()는 문자를 앞에서 부터 찾는 반면에 lastIndexOf() 는 뒤에서부터 검출합니다.

여기서 주의하실 점은 lastIndexOf()는 i가 소문자가 아니고 대문자입니다.

 

출력문을 보시면 

etc-image-5

s 문자열에서 'l'을 찾으니 12번째가 나왔습니다. 

문자를 뒤에서 부터 찾는다고 뒤에서 몇 번째 이것이 아니고 인덱스 위치는 indexOf()와 똑같이 왼쪽부터 시작합니다.

두번째 출력문을 보면 'H'를 찾는데 시작위치가 10입니다. 이것 역시 뒤에서 10을 자르는게 아닌

"Hello Hi Wo" 이렇게 자른것입니다. 

indexOf()와 마찬가지로 아스키코드 값 으로도 찾을 수 있습니다.

99인 'c'를 찾는데 'c'는 2,3번째에 있습니다. 뒤에서 찾으니 3을 찾았고, 시작위치를 2로 지정하니 2를 찾았습니다. 

"abc" 이렇게 된 것 입니다. "def"가 아닙니다.

반응형