


나의 풀이
class Solution {
public String solution(String new_id) {
String answer = new_id.toLowerCase().replaceAll("[^a-z0-9-_.]", ""); // 1, 2
answer = answer.replaceAll("\\.+", "."); // 3
answer = answer.replaceAll("^\\.|\\.$", ""); // 4
if (answer.isEmpty()) { // 5
answer = "a";
}
if (answer.length() > 15) { // 6
answer = answer.substring(0, 15).replaceAll("\\.$", "");
}
while (answer.length() < 3) { // 7
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;
}
private KAKAOID noBlank() {
s = s.isEmpty() ? "a" : s;
return this;
}
private KAKAOID noGreaterThan16() {
if (s.length() >= 16) {
s = s.substring(0, 15);
}
s = s.replaceAll("[.]$", "");
return this;
}
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;
}
}
}