문제 링크: https://programmers.co.kr/learn/courses/30/lessons/72410
이 문제는 문자열 조작 문제로 정규식을 쓸 수 있냐 없냐고 갈리는 것 같다.
정규식만 쓸 줄 안다면 단계별로 진행했을 때 문제 없을 것이다.
정규식을 모른다면 아래 링크를 참고하자!
https://velog.io/@seob/regex-is-easy
class Solution {
public String solution(String new_id) {
String fixedId = new_id.toLowerCase() //알파벳 소문자 치환
.replaceAll("[^a-z0-9_.-]", "") //소문자, 숫자, "-", "_", "." 제외한 모든 문자 제거
.replaceAll("[.]{2,}", ".") //"." 2번 이상 반복되면 "."으로 치환
.replaceAll("^[.]|[.]$", ""); //문자열 시작 or 끝에 있는 "." 제거
//빈 문자열일 경우 "a" 대입
if (fixedId.length() == 0) {
fixedId = "a";
}
//16자 이상이면 15자까지 자르고 문자열 시작 or 끝에 있는 "." 제거
if (fixedId.length() >= 16) {
fixedId = fixedId.substring(0, 15)
.replaceAll("^[.]|[.]$", "");
}
//2자 이하면 끝 문자를 길이가 3이 될 때까지 붙여줌
String appendStr = fixedId.substring(fixedId.length() - 1, fixedId.length());
for (int i = fixedId.length(); i < 3; i++) {
fixedId += appendStr;
}
return fixedId;
}
}