규칙에 맞게 문자열을 바꿔서 출력한다.
toLowerCase()
- 문자열을 소문자로 치환
new_id=new_id.toLowerCase();
replaceAll()
- 문자열의 소문자, 숫자, (-), (_), (.)을 제외하고 모두 공백으로 치환
- 문자열의 (.)가 2개 이상 연속된 경우 (.)1개로 치환
- 문자열의 (.)가 처음이나 끝에 위치한다면 공백으로 치환
- 문자열의 길이가 16이상이라면 0부터 15까지 자르고 (.)가 끝에 위치한다면 공백으로 치환
new_id=new_id.replaceAll("[^0-9a-z-_.]", ""); new_id=new_id.replaceAll("[.]{2,}", "."); new_id=new_id.replaceAll("^[.]|[.]$", "");
if(new_id.length()>=16) { new_id=new_id.substring(0, 15).replaceAll("[.]$", ""); }
a.c : abc, a0c , ..
a..c : abbc, a00c , ..
x* : x의 0번 이상 반복
x+ : x의 1번 이상 반복
^x : 문자열이 x로 시작
x$ : 문자열이 x로 끝남
x? : x가 존재할수도, 하지 않을 수도 있음
ex) ab?c : ac, abc 모두 가능
x|y : x 또는 y
ex) (x|y)z : xy 또는 yz 모두 가능
x{n} : x의 n번 반복
x{m,n} : x의 m번 이상 n번 이하 반복
x{n,} : x의 n번 이상 반복
[xy] : x 또는 y 한 문자
[x-z] : x~z 범위 내의 한 문자
[^xy] : x 또는 y를 제외한 한 문자
equals()
- 빈 문자열이라면 "a" 대입
if(new_id.equals("")) new_id="a";
charAt
- 문자열의 길이가 2이하라면 길이가 3이 될때까지 마지막 문자를 추가
if(new_id.length()<=2){ for (int i=1; i<3; i++) { if(new_id.length()<=i) new_id+=new_id.charAt(new_id.length()-1); } }
class Solution {
public String solution(String new_id) {
new_id=new_id.toLowerCase();
new_id=new_id.replaceAll("[^0-9a-z-_.]", "");
new_id=new_id.replaceAll("[.]{2,}", ".");
new_id=new_id.replaceAll("^[.]|[.]$", "");
if(new_id.equals("")) new_id="a";
if(new_id.length()>=16) {
new_id=new_id.substring(0, 15).replaceAll("[.]$", "");
}
if(new_id.length()<=2){
for (int i=1; i<3; i++) {
if(new_id.length()<=i) new_id+=new_id.charAt(new_id.length()-1);
}
}
return new_id;
}
}