new_id = new_id.toLowerCase();
new_id = new_id.replaceAll("[^-_.a-z0-9]", "");
newid에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(), 마침표(.)를 제외한 모든 문자 제거
정규식 사용 ==> `("[^-_.a-z0-9]")
[^]
는 not 즉, 안의 내용 이외의 것문자를 공백으로 대체하기 위해 replaceAll()
함수 사용
new_id = new_id.replaceAll("[.]{2,}",".");
new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환
정규식 사용 ==> ("[.]{2,}")
[]
하나의 문자를 나타낼 때 사용{}
안에는 반복을 나타내는데 {n, m}
하면 n부터 m개까지, 2개 이상이기 때문에 {2,}
new_id = new_id.replaceAll("^[.]|[.]$", "");
new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거
정규식 사용 ==> `("^[.]|[.]$")
^ : 문자열의 시작을 의미
| : Or 연산
$ : 문장의 끝을 의미
마침표가 처음이나 끝에 있으면 ""로 치환
if(new_id.isEmpty()) new_id += "a";
if(new_id.length()>=16) {
new_id = new_id.substring(0, 15);
new_id = new_id.replaceAll("^[.]|[.]$", "");
}
new_id의 길이가 16자 이상이면
new_id의 첫 15개의 문자만 추출
후에 마침표(.)가 new_id의 끝에 위치한다면 끝에 위치한 마침표(.) 문자를 제거 ==> ""로 치환
substring을 이용해 문자열을 15개로 자름
if(new_id.length()<3){
char c = new_id.charAt(new_id.length()-1);
while(new_id.length() != 3){
new_id += c;
}
}
new_id의 길이가 2자 이하라면
charAt()
으로 마지막 글자를 구함
new_id의 마지막 문자를 new_id의 길이가 3이 될 때까지 반복해서 끝에 붙여줌
new_id의 길이가 3이 되기 전까지 반복
new_id에 붙임(3이 되지 않을 경우에만 마지막 character)
class Solution { public String solution(String new_id) { String answer = ""; new_id = new_id.toLowerCase(); new_id = new_id.replaceAll("[^-_.a-z0-9]", ""); new_id = new_id.replaceAll("[.]{2,}","."); new_id = new_id.replaceAll("^[.]|[.]$", ""); if(new_id.isEmpty()) new_id += "a"; if(new_id.length()>=16) { new_id = new_id.substring(0, 15); new_id = new_id.replaceAll("^[.]|[.]$", ""); } if(new_id.length()<3){ char c = new_id.charAt(new_id.length()-1); while(new_id.length() != 3){ new_id += c; } } answer = new_id; return answer; } }
()
String replaceAll(String regex, String replacement)
r대상 문자열을 원하는 문자 값으로 변환하는 함수
첫번째 매개변수는 변환하고자 하는 대상이 될 문자열
두번째 매개변수는 변환할 문자 값
()
index에 해당하는 문자를 반환
인덱스는 0부터 length()-1 까지
첫 번째 문자 인덱스는 0