https://school.programmers.co.kr/learn/courses/30/lessons/72410
지문을 차례로 따라가면서 푸는 문제이다.
java 문자열 정규표현식
new_id = new_id.toLowerCase();
[^] : 안에 있는 식을 제외하고
new_id = new_id.replaceAll("[^\\-_.a-z0-9]", "");
//new_id = new_id.replaceAll("[^-_.a-z0-9]", "");
"[.]{2,}" : .이 두번 이상
"\\.+" : .이 한번 이상
new_id = new_id.replaceAll("[.]{2,}", ".");
//new_id = new_id.replaceAll("\\.+", ".");
^[.] : 문자열의 처음 문자가 .
[.]$ : 문자열의 마지막 문자가 $
new_id = new_id.replaceAll("^[.]|[.]$", "");
new_id.isEmpty()
new_id.length() == 0
if(new_id.isEmpty()) {
//if(new_id.length() == 0) {
new_id += "a";
}
if(new_id.length() >= 16) {
new_id = new_id.substring(0, 15);
new_id = new_id.replaceAll("[.]$", "");
}
while(new_id.length() < 3) {
new_id += new_id.charAt(new_id.length() - 1);
}
class Solution {
public String solution(String new_id) {
String id = new_id.toLowerCase(); // 소문자로
id = id.replaceAll("[^-_.a-z0-9]", ""); //-_. 영문자 숫자만 남김
id = id.replaceAll("[.]{2,}", "."); // .2개 이상 .으로
id = id.replaceAll("^[.]|[.]$", ""); // 처음과 끝 . 제거
if(id.equals("")) // 빈 문자열이라면 a 추가
id += "a";
if(id.length() >= 16){ // 16자 이상이면 15자로
id = id.substring(0, 15);
id = id.replaceAll("^[.]|[.]$", ""); // 끝 . 제거
}
if(id.length() <= 2) // 2자 이하라면 3자까지 마지막 문자추가
while(id.length() < 3)
id += id.charAt(id.length() - 1);
return id;
}
}