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 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;
}
}
}
클래스의 사용과 정규식의 다양한 사용방법을 배울 수 있는 코드였다!!
"[.]{2,}"
"[.]{2}"
"[.]{2,10}"
"^[!]"
"[!]$"
머쓱;
class Solution {
public String solution(String new_id) {
// 1
new_id = new_id.toLowerCase();
// 2
new_id = new_id.replaceAll("[^\\-_.a-z0-9]", "");
// 3
new_id = removeRangeDot(new_id);
// 4
new_id = removeFirstDot(new_id);
new_id = removeLastDot(new_id);
// 5
if (new_id.length() == 0) new_id = "aaa";
// 6
if (new_id.length() > 15) {
new_id = new_id.substring(0, 15);
new_id = removeLastDot(new_id);
}
// 7
while (new_id.length() < 3) {
new_id += new_id.substring(new_id.length() - 1);
}
return new_id;
}
public String removeRangeDot(String id) {
while (id.contains("..")) id = id.replace("..", ".");
return id;
}
public String removeFirstDot(String id) {
while (id.length() > 0 && id.charAt(0) == '.') id = id.substring(1);
return id;
}
public String removeLastDot(String id) {
while (id.length() > 0 && id.charAt(id.length() - 1) == '.') id = id.substring(0, id.length() - 1);
return id;
}
}