[Java] 문자열에 특정 문자 포함 / 검색하는 다양한 방법(indexOf, contains, matches)

    프로그래밍을 하다보면 특정 문자열에서 원하는 문자가 포함되어 있는지 확인해야하는 소스를 넣을때가 종종 있습니다. 문자열을 찾는 방법은 String클래스의 indexOf(), contains(), matches()메소드를 활용하여 찾을 수 있습니다. 다만 그 용도에 따라서 3가지의 메소드가 조금 다릅니다.

     

    indexOf( ) ,contains( ),matches( )의 메소드의 사용용도

    메소드 사용처
    indexOf() 대상 문자열에서 찾고자 하는 문자의 index값을 찾고싶을때
    contains() 대상 문자열에서 찾고자 하는 문자열이 포함되어있는지 여부를 알고 싶을때
    matches() 대상 문자열에서 정규표현식(숫자, 영문자, 한글)등이 포함되어있는지 여부를 알고 싶을때

     

    indexOf( )을 활용하여 문자열 검색

    사용법 설명
    indexOf(String str)  대상문자열에 인자값으로 주어지는 String값이 있는지 검색합니다.
    indexOf(char ch)  대상문자열에 인자값으로 주어지는 char값이 있는지 검색합니다.
    indexOf(String str, int fromIndex) 대상문자열에 첫번째 인자값으로 주어지는 String값이 있는지 두번째 인자값의 index부터 검색합니다.
    indexOf(char ch, int fromIndex)  대상문자열에 첫번째 인자값으로 주어지는 char값이 있는지 두번째 인자값의 index부터 검색합니다.
    public class indexOf {
        public static void main(String[] args)  {
            String s = "Hello welcome to the this place";
            System.out.println(s.indexOf("welcome")); //문자열 검색
            System.out.println(s.indexOf("t")); //단어 검색
            System.out.println(s.indexOf("welcome",10)); //문자열을 10번째 index부터 검색
            System.out.println(s.indexOf("t",10)); //단어를 10번째 index부터 검색
            
            if(s.indexOf("welcome")!=-1) {
                System.out.println("문자가 포함되어 있습니다.");
            }else {
                System.out.println("문자가 포함되어 있지 않습니다.");
            }
        }
    }
    

    예제1

    가장 대중화 되어 있는 문자열 검색 방법은 String클래스의 indexOf()을 사용해서 찾는 방법입니다. indexOf()메소드는 매개값으로 주어진 문자열이 시작되는 인덱스를 리턴합니다. 만약 주어진 문자열이 포함되어 있지 않으면 -1을 리턴합니다. 만약 뒤에서부터 index값을 검색하고 싶으면 lastIndexOf()메소드를 사용하면 되고 사용법은 indexOf()와 같습니다.

     

    contains( )을 활용하여 문자열 검색

    public class contains {
        public static void main(String[] args)  {
            String s = "Hello welcome to the this place";
    		
            if(s.contains("welcome")) {
                System.out.println("문자가 포함되어 있습니다.");
            }else {
                System.out.println("문자가 포함되어 있지 않습니다.");
            }
        }
    }
    

    예제2

    문자열 검색만을 위한다면 contains를 활용하는것이 가장 효율적입니다.  contains메소드는 문자열에 검색하고자 하는 문자가 있는지 확인하여 포함되어있다면 true를 포함되어있지 않다면 false값을 리턴합니다.

     

    matches( )을 활용하여 문자열 검색

    public class matches {
        public static void main(String[] args)  {
            String s = "Hello welcome to the this place";
    		
            //특정 문자열 검색
            if(s.matches(".*welcome.*")) {
                System.out.println("문자가 포함되어 있습니다.");
            }else {
                System.out.println("문자가 포함되어 있지 않습니다.");
            }
            
            //영문자가 있는지 검색
            if(s.matches(".*[a-zA-Z].*")) {
                System.out.println("영문자가 포함되어 있습니다.");
            }else {
                System.out.println("영문자가 포함되어 있지 않습니다.");
            }
            
            //숫자가 있는지 검색
            if(s.matches(".*[0-9].*")) {
                System.out.println("숫자가 포함되어 있습니다.");
            }else {
                System.out.println("숫자가 포함되어 있지 않습니다.");
            }
        }
    }
    

    예제3

    matches는 정규식을 이용하여 문자열을 검색합니다. 특정 문자열을 검색할때보다는 영문자나 숫자등의 정규표현식이 대상 문자열에 포함되어 있는지 아닌지 확인해야 할때 유용하게 사용되는 함수입니다. 포함되어 있다면 ture 포함되어 있지 않다면 false값을 리턴합니다.

    댓글

    Designed by JB FACTORY