https://school.programmers.co.kr/learn/courses/30/lessons/72410
문자열을 조건에 맞게 치환하는 문제이다. 정규표현식을 사용한다.
a-z
는 소문자,0-9
는 숫자, \\-_.
는 특수문자이기 때문에 이스케이프 문자를 앞에 추가해 패턴을 적용{n, }
을 이용하여 마침표가 2번이상 연속되면 마침표 하나로 치환class Solution {
public String solution(String new_id) {
String answer = "";
answer = new_id.toLowerCase();
answer = answer.replaceAll("[^a-z0-9\\-_.]","");
answer = answer.replaceAll("\\.{2,}",".");
answer = answer.replaceAll("^[.]|[.]$","");
answer = answer.length()==0 ? "a":answer;
answer = answer.length() >= 16 ? answer.substring(0,15) : answer;
answer = answer.replaceAll("[.]$","");
if(answer.length()<=2) {
char c = answer.charAt(answer.length()-1);
StringBuilder sb = new StringBuilder(answer);
while(sb.length()<3){
sb.append(c);
}
answer = sb.toString();
}
return answer;
}
}