728x90
정규표현식을 사용해서 마스킹되어있는 문자와, 유저 ID가 일치하는지 아닌지 확인해볼 수 있다.
예를들어 유저 ID가 dropdew(userid)이고, 마스킹되어있는 문자가 dr**pd*w(banid)라고 한다면
*의 개수를 제외한 나머지 문자의 일치 개수가 같으면 같은 문자라고 볼 수 있을 것이다.
String tmp = banid.replace("*", "");
int num = banid.length();
int cnt = 0;
for(int i=0; i<userid.length(); i++){
if(userid.charAt(i) == banid.charAt(i)){
cnt++;
}
}
if(cnt == num){
//둘은 같은 문자라고 볼 수 있음.
}
이런 방법을 사용해서 *을 제외한 나머지 문자가 다 같은 경우인지 체크해줘도 되지만,
정규표현식을 사용해서 확인할 수 있는 방법이 있다.
정규식 표현에서 '.'은 임의의 문자를 의미한다.
즉, dr**pd*w를 dr..pd.w로 바꾸게 된다면, 임의의 문자가 들어있는 상태가 되는 것.
*을 .으로 바꿔줘야 한다.
코드로 작성하면 String pattern = bannedId.replace("*", ".");
String pattern = banid.replace("*", ".");
//우선 *을 .으로 전부 변경시켜준다.
if(Pattern.matches(pattern, userid)){
//둘은 같은 문자열이야!
}
Pattern.matches(정규식, 비교대상 문자열) 를 통해서 문자열 비교해주면 된다.
import java.util.regax.Pattern;
Pattern.matches 사용하기 위해서는 꼭 import 필수.
728x90
'코테 > 정리' 카테고리의 다른 글
| [MySQL] RECURSIVE 재귀 쿼리 (1) | 2024.12.23 |
|---|---|
| [JAVA] 유클리드 호제법 (최소공배수, 최대공약수) (0) | 2024.05.17 |
| [MySQL] SUBSTR() 사용해서 문자열 뒤에서 부터 자르기 (0) | 2024.05.16 |
| [MySQL] CONV함수 사용해서 진수 변환하기 (0) | 2024.05.16 |
| [MySQL] RANK 함수 (0) | 2024.04.16 |