class Solution {
public String solution(String new_id) {
// 틀리면 유사한 아이디 추천
// 정규식
// 3~15자
// 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)
// 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없음
// 소문자로 치환
// 가능한 문자 아니면 제거
// 마침표 1개로 설정 + 첨이나 끝이면 삭제
// 빈 거면 a, 16부터는 삭제 => 마지막 마침표면 삭제
// 마지막 문자 반복
new_id = new_id.toLowerCase();
// String pattern = "w|'-'|'_'|'.'";
// for(int i=0;i<new_id.length();i++){
// char now = new_id.charAt(i);
// if(!Pattern.matches(pattern, now) || (i+1<new_id.length() && now == '.' && new_id.charAt(i+1)=='.') ){
// new_id = new_id.subString(0,i)+new_id.subString(i+1);
// i--;
// }
// }
new_id = new_id.replaceAll("[^a-z0-9-_.]", "");
new_id = new_id.replaceAll("\\.{2,}",".");
if(!new_id.isEmpty() && new_id.charAt(0)=='.'){
new_id = new_id.substring(1);
}
if(!new_id.isEmpty() && new_id.charAt(new_id.length()-1)=='.'){
new_id = new_id.substring(0,new_id.length()-1);
}
if(new_id.isEmpty()){
new_id = "a";
}
if(new_id.length()>=16){
new_id = new_id.substring(0,15);
if(new_id.charAt(new_id.length()-1)=='.')
new_id = new_id.substring(0,14);
}
if(new_id.length()<=2){
while(true){
if(new_id.length()==3) break;
new_id = new_id+new_id.charAt(new_id.length()-1);
}
}
return new_id;
}
}