class Solution {
public String solution(String new_id) {
String id = new_id.toLowerCase(); // 1. 소문자 -> 대문자
String result = id.replaceAll("[^0-9a-z_.-]", ""); //2. 숫자, 영어, '-','_','.' 를 제외하고 다 제거
id = result.replaceAll("[.]+", "."); // 3. ..이 반복할 경우 . 로 변경
StringBuilder sb = new StringBuilder(id);
if (sb.length() > 0 && sb.charAt(0) == '.') sb.deleteCharAt(0); // 4. 처음의 '.' 제거
if (sb.length() > 2 && sb.charAt(sb.length() - 1) == '.') sb.deleteCharAt(sb.length() - 1); //4. 끝의 '.' 제거
if (sb.length() == 0) sb.append("aaa"); // 5. 빈문자열은 "aaa"로 변경
// 6. 문자열의 길이가 16자 이상일 경우 15번째이후로 제거
if (sb.length() >= 16) {
sb.setLength(15);
if (sb.charAt(14) == '.') sb.deleteCharAt(14); // 제거한 후 마지막 문자가 '.' 경우 제거
}
// 7. 문자열의 길이가 2 이하인 경우 끝문자를 반복하여 3으로 만들어준다.
else if (sb.length() < 3) {
if (sb.length() == 2) sb.append(sb.charAt(sb.length() - 1));
else {
sb.append(sb.charAt(sb.length() - 1));
sb.append(sb.charAt(sb.length() - 1));
}
}
String answer = sb.toString();
return answer;
}
}
👉 정규식을 사용하긴했지만, 1번째와 2번째 규칙이외에 활용하지 못했다.
문제해결만을 위한 코딩을 한 것 같다.
class Solution {
public String solution(String new_id) {
String id = new_id.toLowerCase(); // 1. 대문자 -> 소문자
id = id.replaceAll("[^0-9a-z_.-]", ""); // 2. 영어,숫자,'-','_''.' 빼고 제거
id = id.replaceAll("[.]+", "."); // 3. '.' 연속될 경우 '.'로 변경
id = id.replaceAll("^[.]|[.]$",""); // 4. 처음과 끝의 '.' 제거
if(id.isEmpty()) id = "aaa"; // 5. 빈문자열일경우 aaa 로 변경
// 6. 길이가 16자 이상 -> 15번째까지만
if(id.length()>=16){
id = id.substring(0,15);
id = id.replaceAll("[.]$","");
}
//7. 길이가 2자 이하 -> 끝문자 반복 (길이 3까지)
if(id.length()<=2){
while(id.length()<3){
id += id.charAt(id.length()-1);
}
}
String answer = id;
return answer;