반응형
자바에서 IF를 사용해 특정 값일 경우에만 체크하려는 경우
위 배열에서 if(값 == "zebra") {} 로 시작하지만
이게 원하는 값이 늘어나면 늘어날수록
if(값 == "zebra" || 값 == "dog" ...) {}
이런 식으로 계속 늘어나기 때문에
3개만 넘어가도 볼게 못 된다
이럴 때 오라클의 IN 처럼
값 IN ('1', '2', '3');
이런 식으로 처리가 가능하면 참 좋을텐데
자바에는 Pattern이 있으므로 이걸 사용해주면
오라클의 IN처럼 사용이 가능해진다
Pattern은
Pattern 패턴명 = Pattern.compile("값|값");
이렇게 정의하는데
값과 값은 |를 넣어 구분하게 된다
이후 비교 시에는
패턴명.matcher(값).find()
를 사용하면 비교하려는 값에
패턴 값이 있냐 없냐에 따라서 true, false를 반환하게 된다
위 예제에서는
String 배열에는 zeebra, dog, cat이 있고
패턴에 dog, cat가 들어있으니
패턴에 해당하는 dog, cat이 출력된다
다음으로는 패턴값을
내가 고정으로 정하는 게 아니라
어디서 받아오는 경우인데
String 배열이나 list 등에서 값을 가져와서
Pattern을 만들어야 하는 경우에는
for문을 한번 돌려주면 되는데
마지막 전까지는 |를 붙여가며 String을 연장하다가
맨 마지막에는 붙이지 말고
완성시킨 String을 Pattern.compile() 안에 넣어주면
하드코딩으로 설정하지 않아도 관리가 가능하다
마지막으로 예제에 사용한 코드는 아래와 같다
// 패턴 예제
public static void main(String[] args) {
Pattern p = Pattern.compile("dog|cat"); // |를 붙이면서 Pattern 연장
String[] array = {"zeebra", "dog", "cat"};
System.out.println(p.matcher(array[0]).find());
for(int i = 0; i<array.length; i++) {
if(p.matcher(array[i]).find()) { // Pattern에 해당하는 값만 찾기
System.out.println(array[i]);
}
}
}
// 패턴 예제(Array로 받을 경우)
public static void main(String[] args) {
String[] mainArray = {"cat", "zeebra", "dog", "horse"}; // 전체 Array
String[] array = {"zeebra", "dog"}; // Pattern에 사용될 Array
String patternResult = "";
for(int i = 0; i<array.length; i++) {
if(i == array.length - 1) { // 마지막에는 |를 붙일 필요가 없음
patternResult = patternResult + array[i];
} else { // | 붙여가며 연장
patternResult = patternResult + array[i] + "|";
}
}
Pattern p = Pattern.compile(patternResult); // 연장한 String을 Pattern화
for(int i = 0; i<mainArray.length; i++) {
if(p.matcher(mainArray[i]).find()) { // Pattern에 해당하는 값만 찾기
System.out.println(mainArray[i]); // 출력
}
}
}
반응형
'Language > Java' 카테고리의 다른 글
자바 스트림(Stream) 예제부터 사용법까지 정리 (5) | 2020.12.06 |
---|---|
자바 람다(Lambda) 기초부터 사용방법 정리 (1) | 2020.12.06 |
자바 Timestamp를 이용한 현재 시간 구하는 방법 (0) | 2020.11.19 |
자바 JDK JRE 차이 정리 (0) | 2020.11.10 |
자바 숫자 대소문자 합쳐 Random으로 출력방법 (0) | 2020.10.29 |
댓글