코딩익힘책#4 신규아이디 추천
2569 단어 coding challengecoding challenge
나의 코드
function solution(new_id) {
var answer = "";
let temp_answer = "";
let flag = 1;
// 1단계: 대문자 -> 소문자
answer = new_id.toLowerCase();
console.log("1단계: ", answer);
// 2단계: 알파벳 소문자, 숫자, -, _, . 을 제외한 문자 제거
var pattern = /[a-z0-9_\-.]/g;
answer = answer.match(pattern);
console.log("2단계: ", answer);
// 3단계: .이 연속된 경우 제거
for (let i = 0; i < answer.length; i++) {
if (answer[i] == "." && flag == 1) {
temp_answer += answer[i];
flag = 0;
} else if (answer[i] == "." && flag == 0) {
flag = 0;
} else {
temp_answer += answer[i];
flag = 1;
}
}
console.log("3단계: ", temp_answer);
// 4단계: 처음과 마지막 . 제거
if (temp_answer[0] == ".") {
temp_answer = temp_answer.substr(1);
}
if (temp_answer[temp_answer.length - 1] == ".") {
temp_answer = temp_answer.substr(0, temp_answer.length - 1);
}
console.log("4단계: ", temp_answer);
// 5단계: 아이디가 빈 문자열일 경우 a 추가
if (temp_answer.length == 0) {
temp_answer += "a";
}
console.log("5단계: ", temp_answer);
// 6단계: 아이디의 길이가 16자 이상일 경우, 처음 15자를 제외한 나머지 문자 제거
// 만약, 마지막 문자가 . 일 경우 . 제거
if (temp_answer.length > 15) {
temp_answer = temp_answer.substr(0, 15);
}
if (temp_answer[temp_answer.length - 1] == ".") {
temp_answer = temp_answer.substr(0, temp_answer.length - 1);
}
console.log("6단계: ", temp_answer);
// 7단계: 길이가 2자 이하라면, 마지막 문자를 길이가 3이 될때까지 반복해서 추가
answer = temp_answer;
if (temp_answer.length < 3) {
for (i = 0; i < 3 - temp_answer.length; i++) {
answer += temp_answer[temp_answer.length - 1];
}
}
console.log("7단계: ", answer);
return answer;
}
const new_id = "...!@BaT#*..y.abcdefghijklm";
const answer = solution(new_id);
console.log(answer);
베스트 코드
function solution(new_id) {
const answer = new_id
.toLowerCase() // 1
.replace(/[^\w-_.]/g, '') // 2
.replace(/\.+/g, '.') // 3
.replace(/^\.|\.$/g, '') // 4
.replace(/^$/, 'a') // 5
.slice(0, 15).replace(/\.$/, ''); // 6
const len = answer.length;
return len > 2 ? answer : answer + answer.charAt(len - 1).repeat(3 - len);
}
느낀점
ㅋㅋㅋㅋㅋㅋㅋ..후....
오늘의 문제 덕분에 맛보기 정규표현식과 substr() 함수를 배웠다.
아니, 어쩌면 맛도 못본 것같다. 아마 냄새만 맡은 정도일 것이다.
그 것도 아주 얕게... 갈길이 멀다 파이팅하자
아 그리고 이제부터는 JS로 푼다.. 명색의 FE인데...ㅎ
Author And Source
이 문제에 관하여(코딩익힘책#4 신규아이디 추천), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kimtothechang/코딩익힘책4-신규아이디-추천저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)