프로그래밍을 하다보면 특정 문자열에서 원하는 문자가 포함되어 있는지 확인해야하는 소스를 넣을때가 종종 있습니다. 문자열을 찾는 방법은 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("문자가 포함되어 있지 않습니다.");
}
}
}
가장 대중화 되어 있는 문자열 검색 방법은 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("문자가 포함되어 있지 않습니다.");
}
}
}
문자열 검색만을 위한다면 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("숫자가 포함되어 있지 않습니다.");
}
}
}
matches는 정규식을 이용하여 문자열을 검색합니다. 특정 문자열을 검색할때보다는 영문자나 숫자등의 정규표현식이 대상 문자열에 포함되어 있는지 아닌지 확인해야 할때 유용하게 사용되는 함수입니다. 포함되어 있다면 ture 포함되어 있지 않다면 false값을 리턴합니다.
'Language > Java' 카테고리의 다른 글
[Java] 문자열 비교하기 == , equals() 의 차이점 (12) | 2020.05.04 |
---|---|
[Java] 문자열 길이 구하기, 제한하기 length() (3) | 2020.05.03 |
[Java] 문자열 대소문자 변경 & 비교 (toUpperCase , toLowerCase) (0) | 2020.05.01 |
[Java] 자바 제곱근(루트) 구하기 Math.sqrt() (2) | 2020.04.30 |