문자열

문자열은 굉장히 특이하다. primitive 값이면서 객체처럼 메서드 사용이 가능한 것인데 그이유는 따로 있다. 문자열에 메서드 사용을 할때마다 String객체로 불려오기 때문에 String 객체로서 메서드를 사용하고 반환될때에는 다시 primitive 값으로 형변환이 되기때문이다.

더 자세히 들어가자면 hint라는 속성이 있다.

hint

hint라고 하는 것은 객체가 목표로하는 자료형 이라는 뜻으로 객체가 primitive 자료형으로 형변환을 할때 이 hint에서 목적성을 얻어 형변환을 한다. 이렇게 객체가 자동으로 primitive 자료형으로 형변환을 할때 hint를 참고해서 변환을 실시한다.

Symbol.toPrimitive(함수 값으로 사용) 특성, 목적은 기본 값으로 변환 할 수있다. 이 함수는 hint결과 프리미티브 값의 선호 유형을 지정 하는 문자열 인수로 호출됩니다 . hint인수는 "중 하나가 될 수 있습니다 number", " string" "및 default".

const object1 = {
 [Symbol.toPrimitive](hint) {
   if (hint === 'number') {
     return 42;
   }
   return null;
 }
};
console.log(+object1);
// expected output: 42

문자열 메서드 예제

const str = 'doodream';
console.log(str[0]); // d
console.log(str.length); // 8  
console.log(str.indexOf('d')); // 0
console.log(str.lastIndexOf('d')); // 3
// slice 앞에서 3번째 다음부터 끝까지
console.log(str.slice(3)); // dream 
// slice 뒤에서 5번째 부터 끝까지
console.log(str.slice(-5)); // dream 
// slice index 0 부터 index - 1 까지
console.log(str.slice(0, 3)); // doo

console.log(str.toUpperCase()); // 전부 대문자로
console.log(str.toLowerCase()); // 전부 소문자로

const email = 'doodream@naver.com';
const nickEmail = ' Doodream@naver.com \n';
console.log(nickEmail.trim()); // 앞뒤 공백만 없얘준다.
console.log(email === nickEmail.toLowerCase().trim()); // true
const specialEmail = email.replace('@', '$');
console.log(specialEmail);
// 문자열을 해당 문자열로 바꿔준다. 
// replace는 첫번째로 찾은 문자열을 바꿔줄뿐 모두 바꾸려면 정규식이 필요하다.
console.log(email.replace(/o/g, 'a'));
// daadream@naver.com
// 정규식 /string/flag 으로 o 전체를 'a'로 바꾸기
console.log(email.replaceAll('o','a');
// 위 코드와 동일한 효과
            
console.log(email.includes('doodream'));
// true 문자열이 들어있는지 확인 
console.log(email.startsWith('doo'));
// true 해당 문자열로 시작하는지 확인
console.log(email.endsWith('com'));
// true 해당 문자열로 끝나는지 확인
console.log(email.split('@'));
// [doodream, naver.com] 해당문자열로 본 문자열을 분해하여 배열로 반환 
const emailInfo = email.split('@');
console.log(emailInfo.join('@'));
// 'doodream@naver.com' split()의 반대로 문자열 배열을 매개변수로 받은 문자열로 붙여서 하나의 문자열로 반환
console.log(email.padStart(25, '*'));
// *******doodream@naver.com
//총문자열의 길이가 25 만큼 되도록 앞에 * 을 넣어라
console.log(email.padEnd(25, '*'));
// doodream@naver.com*******
// 총문자열의 길이가 25 만큼 되도록 뒤에 * 을 넣어라
console.log(email.repeat(5));
// doodream@naver.comdoodream@naver.comdoodream@naver.com...
// 문자열 5번 반복붙인 총 문자열 반환
profile
일상을 기록하는 삶을 사는 개발자 ✒️ #front_end 💻

0개의 댓글