

내가 작성한 코드
class Solution {
public String solution(String new_id) {
String answer = new_id;
// 1단계: 소문자로 변환
answer = answer.toLowerCase();
// 2단계: 알파벳 소문자, 숫자, '-', '_', '.' 제외한 문자 제거
answer = answer.replaceAll("[^a-z0-9-_.]","");
// 3단계: 연속된 . 하나로 합치기
answer = answer.replaceAll("[.]{2,}",".");
// 4단계: 처음과 끝의 . 제거
answer = answer.replaceAll("^[.]|[.]$","");
// 5단계: 빈 문자열이면 "a"로 대체
if (answer.isEmpty()) {
answer = "a";
}
// 6단계: 16자자 이상이면 자르기
if (answer.length() >= 16) {
answer = answer.substring(0, 15);
// 마지막 문자가 .이면 제거
if (answer.charAt(answer.length() - 1) == '.') {
answer = answer.substring(0, answer.length() - 1);
}
}
// 7단계: 길이가 2자 이하이면 마지막 문자를 반복하여 길이를 3으로 맞추기
while (answer.length() < 3) {
answer += answer.charAt(answer.length() - 1);
}
return answer;
}
}
다른 사람의 코드
class Solution {
public String solution(String new_id) {
String s = new KAKAOID(new_id)
.replaceToLowerCase()
.filter()
.toSingleDot()
.noStartEndDot()
.noBlank()
.noGreaterThan16()
.noLessThan2()
.getResult();
return s;
}
private static class KAKAOID {
private String s;
KAKAOID(String s) {
this.s = s;
}
// 소문자로 변경하는 메서드
private KAKAOID replaceToLowerCase() {
s = s.toLowerCase();
return this;
}
// . _ - 외의 문자를 제거하는 메서드
private KAKAOID filter() {
s = s.replaceAll("[^a-z0-9._-]", "");
return this;
}
// 연속된 .을 하나로 바꾸는 메서드
private KAKAOID toSingleDot() {
s = s.replaceAll("[.]{2,}", ".");
return this;
}
// 문자열의 시작과 끝에 있는 .을 제거하는 메서드
private KAKAOID noStartEndDot() {
s = s.replaceAll("^[.]|[.]$", "");
return this;
}
// 문자열이 비어있으면 a로 채우는 메서드
private KAKAOID noBlank() {
s = s.isEmpty() ? "a" : s;
return this;
}
// 문자열의 길이가 16자 이상이면 15자로 줄이고, 마지막에 .이 있으면 제거하는 메서드
private KAKAOID noGreaterThan16() {
if (s.length() >= 16) {
s = s.substring(0, 15);
}
s = s.replaceAll("[.]$", "");
return this;
}
// 문자열의 길이가 2자 미만이면 마지막 문자를 반복하여 3자로 만드는 메서드
private KAKAOID noLessThan2() {
StringBuilder sBuilder = new StringBuilder(s);
while (sBuilder.length() <= 2) {
sBuilder.append(sBuilder.charAt(sBuilder.length() - 1));
}
s = sBuilder.toString();
return this;
}
// 최종 결과를 반환하는 메서드
private String getResult() {
return s;
}
}
}
Share article