01. at()

"문자열".at(위치값)
  • ()안에 숫자를 index로 받아 문자열에 해당 되는 인덱스의 요소를 반환합니다.
  • 배열에도 사용가능하며 정수값을 받아 utf-16코드 단위로 구성된 새 string을 반환
{
    "Live positive".at("3");        // e
    "Live positive".at("6");        // o(띄여쓰기 무시)
    "Live positive".at("10");       // i
    "Live positive".at("20");       // undefined
    
    "Live positive".at("-3");        // i
    "Live positive".at("-6");        // s
    "Live positive".at("-10");       // e(띄여쓰기 무시)
    "Live positive".at("-20");       // undefined
    
    "Live positive".at("e");        // L(문자는 우연히 1로 변환하여 L을 받아드립니다.)
    "Live positive".at("p");        // L
    "Live positive".at("pos");      // L
    
    "Live positive".at("p9");       // L
    "Live positive".at("p","o");    // L
    "Live positive".at("Live");     // L
    
    "Live positive".at(0);          // L
    "Live positive".at(4);          //   (띄여쓰기까지 포함되어 4번째 인 띄여쓰기가 출력됩)
    "Live positive".at(10);         // i
    "Live positive".at(20);         // undefined
    
    "Live positive".at(-4);         // t
    "Live positive".at(-10);        // e
    "Live positive".at(-20);        // undefined
}

02. charAt()

"문자열".charAt(위치값)
  • String 차입의 데이터(문자열)에서 특정 문자르 char 타입으로 변환 할때 사용하는 함수
  • 문자열에서 특정 인덱스에 위치하는 유니코드 단일문자를 반환
  • 유니코드는 ASCII코드와 달리 16비트 이상의 다양한 비트 수를 사용하여 문자를 표현합니다
{
    "Live positive".charAt("3");        // e
    "Live positive".charAt("6");        // o(띄여쓰기 무시)
    "Live positive".charAt("10");       // i
    "Live positive".charAt("20");       // undefined(아무것도 안나오지만 undefined를 출력한 것임)
    
    "Live positive".charAt("-3");        // undefined (음수 인덱스는 받을 수 없어 undefined가 출력됨)
    "Live positive".charAt("-6");        // undefined 
    "Live positive".charAt("-10");       // undefined
    "Live positive".charAt("-20");       // undefined
    
    "Live positive".charAt("e");        // L(문자는 우연히 1로 변환하여 L을 받아드립니다.)
    "Live positive".charAt("p");        // L
    "Live positive".charAt("pos");      // L
    
    "Live positive".charAt("p9");       // L
    "Live positive".charAt("p","o");    // L
    "Live positive".charAt("Live");     // L
    
    "Live positive".charAt(0);          // L
    "Live positive".charAt(4);          //   (띄여쓰기까지 포함되어 4번째 인 띄여쓰기가 출력됩)
    "Live positive".charAt(10);         // i
    "Live positive".charAt(20);         // undefined
    
    "Live positive".charAt(-4);         // undefined (음수는 받을 수 없으므로)
    "Live positive".charAt(-10);        // undefined
    "Live positive".charAt(-20);        // undefined
}

03. charCodeAt()

"문자열".charCodeAt(위치값)
  • index에 해당하는 문자의 UTF-16 코드 값을 리턴합니다.
  • 0에서 65535 사이의 숫자를 반환
{
    "Live positive".charCodeAt("3");        // e = 101
    "Live positive".charCodeAt("6");        // o = 111(띄여쓰기 무시)
    "Live positive".charCodeAt("10");       // i = 105
    "Live positive".charCodeAt("20");       // NaN(아무것도 안나오지만 NaN를 출력한 것임)

    "Live positive".charCodeAt("-3");        // NaN (음수 인덱스는 받을 수 없어 NaN가 출력됨)
    "Live positive".charCodeAt("-6");        // NaN 
    "Live positive".charCodeAt("-10");       // NaN
    "Live positive".charCodeAt("-20");       // NaN

    "Live positive".charCodeAt("e");        // L = 76(정상적인 결과값이 아님/다른 브라우저에서는 원래라면 NaN을 반환함)
    "Live positive".charCodeAt("p");        // L = 76(정상적인 결과값이 아님)
    "Live positive".charCodeAt("pos");      // L = 76(정상적인 결과값이 아님)

    "Live positive".charCodeAt("p9");       // L = 76(정상적인 결과값이 아님)
    "Live positive".charCodeAt("p","o");    // L = 76(정상적인 결과값이 아님)
    "Live positive".charCodeAt("Live");     // L = 76(정상적인 결과값이 아님)
    "Live positive".charCodeAt("Live positive rrr")      // L = 76(정상적인 결과값이 아님)

    "Live positive".charCodeAt(0);          // L = 76
    "Live positive".charCodeAt(4);          // p = 32(띄여쓰기 무시)
    "Live positive".charCodeAt(10);         // i = 105
    "Live positive".charCodeAt(20);         // NaN

    "Live positive".charCodeAt(-4);         // NaN
    "Live positive".charCodeAt(-10);        // NaN
    "Live positive".charCodeAt(-20);        // NaN
}

04. codePointAt()

"문자열".codePointAt(위치값)
  • 문자열에서 인덱스에 대한 유니코드 포인트 값이 아닌 정수를 반환하빈다.
  • 주어진 인덱스 위치의 코드 포인트를 반환하며 이모지까지도 정확하고 올바르게 잔환할수 있습니다.
{
    "Live positive".codePointAt("3");        // e = 101
    "Live positive".codePointAt("6");        // o = 111(띄여쓰기 무시)
    "Live positive".codePointAt("10");       // i = 105
    "Live positive".codePointAt("20");       // undefined(아무것도 안나오지만 undefined를 출력한 것임)
    
    "Live positive".codePointAt("-3");        // undefined (음수 인덱스는 받을 수 없어 undefined가 출력됨)
    "Live positive".codePointAt("-6");        // undefined 
    "Live positive".codePointAt("-10");       // undefined
    "Live positive".codePointAt("-20");       // undefined
    
    "Live positive".codePointAt("e");        // L = 76(정상적인 결과값이 아님/다른 브라우저에서는 원래라면 undefined을 반환함)
    "Live positive".codePointAt("p");        // L = 76(정상적인 결과값이 아님)
    "Live positive".codePointAt("pos");      // L = 76(정상적인 결과값이 아님)
    
    "Live positive".codePointAt("p9");       // L = 76(정상적인 결과값이 아님)
    "Live positive".codePointAt("p","o");    // L = 76(정상적인 결과값이 아님)
    "Live positive".codePointAt("Live");     // L = 76(정상적인 결과값이 아님)
    "Live positive".codePointAt("Live positive rrr")      // L = 76(정상적인 결과값이 아님)
    "🤔".charPointAt("🤔")                 // 1293000
    
    "Live positive".codePointAt(0);          // L = 76
    "Live positive".codePointAt(4);          // p = 32(띄여쓰기 무시)
    "Live positive".codePointAt(10);         // i = 105
    "Live positive".codePointAt(20);         // undefined
    
    "Live positive".codePointAt(-4);         // undefined
    "Live positive".codePointAt(-10);        // undefined
    "Live positive".codePointAt(-20);        // undefined 
}

05. concat()

"문자열".concat('원하는 문자열', 매개변수)
  • 문자열이나 배열을 이어붙이는 역할을 합니다.
  • 기존의 문자열이나 배열을 수정하지 않고 새로운 문자열이나 배열을 반환합니다.
{
    const str1 = 'Live';
    const str2 = 'positive';
    const str3 = str1.concat(' ',str2);
    console.log(str3);  // Live positive
    
    const arr1 = [1, 2, 3];
    const arr2 = [4, 5, 6];
    const arr3 = arr1.concat(arr2);
    console.log(arr3); // [1, 2, 3, 4, 5, 6]
}

06. includes()

"문자열".indexOf(검색값, [위치값])
  • 문자열 포함 여부를 검색하여, 불린(true, false)을 반환합니다.
  • 대소문자를 구별합니다.
{
    "javascript reference".includes("javascript");  //true
    "javascript reference".includes("j");  //true
    "javascript reference".includes("J");  //false
    "javascript reference".includes("a");  //true
    "javascript reference".includes("reference");  //true
    "javascript reference".includes("reference", 11);  //true
    "javascript reference".includes("reference", 12);  //false
}

07. indexOf()

"문자열".indexOf(검색값, [위치값])
  • 문자열을 검색하여, 주어진 값과 일치하는 첫 번째 위치값(index)을 반환합니다.
  • 문자열을 검색하여, 주어진 값과 일치하는 것이 없으면 -1을 반환합니다.
  • 대소문자를 구별합니다.
{
    "javascript reference".indexOf("javascript");   // 0 
    "javascript reference".indexOf("javascripts");  // -1
    "javascript reference".indexOf("j");   // 0
    "javascript reference".indexOf("J");   // -1
    "javascript reference".indexOf("a");   // 1
    "javascript reference".indexOf("ja");  // 0
    "javascript reference".indexOf("jv");  // -1
    "javascript reference".indexOf("reference")   // 11
    "javascript reference".indexOf("r");    // 6
    "javascript reference".indexOf("re");   // 11
    "javascript reference".indexOf("javascript", 0);    // 0
    "javascript reference".indexOf("javascript", 1);    // -1
    "javascript reference".indexOf("reference", 0);   // 11
    "javascript reference".indexOf("reference", 11);  // 11
    "javascript reference".indexOf("reference", 12);  // -1
    "javascript reference".indexOf("r", 7);    // 11
    "javascript reference".indexOf("r", 12);   // 15
}

08. lastIndexOf()

"문자열".lastIndexOf(검색값, [위치값])
  • 문자열을 역순으로 검색하여, 주어진 값과 일치하는 첫 번째 위치값(index)을 반환합니다.
  • 문자열을 역순으로 검색하여, 주어진 값과 일치하는 것이 없으면 -1을 반환합니다.
  • 대소문자를 구별합니다.
{
    "javascript reference".lastIndexOf("javascript");       //0
    "javascript reference".lastIndexOf("javascripts");      //-1
    "javascript reference".lastIndexOf("j");                //0
    "javascript reference".lastIndexOf("a");                //3
    "javascript reference".lastIndexOf("jv");               //-1
    "javascript reference".lastIndexOf("reference");       //11
    "javascript reference".lastIndexOf("r");                //15
}

09. localeCompare()

"기준 문자열".localeCompare(위치를 찾고자 하는 문자열)
  • 참조조문자열이 정렬 순으로 지정딘 문자열 앞 혹은 뒤에 오는지 또는 동일한 문자열인지 나타내는 숫치를 반환
  • 앞에 있으면 -1 뒤에 있으면 1 동일한 위치(같은 변수)면 0
{
    const str1 = 'Live';
    const str2 = 'positive';
    const str3 = 'javascript';
    
    console.log(str1.localeCompare(str2)); // -1
    console.log(str2.localeCompare(str1)); // 1
    console.log(str2.localeCompare(str3)); // 1
    console.log(str3.localeCompare(str2)); // -1
    console.log(str1.localeCompare(str1)); // 0
    console.log(str1.localeCompare(str3)); // 1
}

10. match()

"문자열".match(검색값)
"문자열".match(정규식표현)
  • 문자열(정규식을) 검색하고, 문자값(배열)을 반환합니다.
  • 문자열을 검색하여, 주어진 값과 일치하는 것이 없으면 null을 반환합니다.
  • 대소문자를 구별합니다.
  • match() 메서드는 문자값(배열)을 반환하고, search() 메서드는 위치값(숫자)를 반환하는 것이 다릅니다.
{
    "javascript reference".match("javascript");    //"javascript"
    "javascript reference".match("reference");    //"reference"
    "javascript reference".match("r");             //"r"
    "javascript reference".match("R");             //null
    "javascript reference".match(/reference/);    //reference
    "javascript reference".match(/Reference/);    //null
    "javascript reference".match(/Reference/i);   //reference
    "javascript reference".match(/Reference/g);   //null
    "javascript reference".match(/r/);             //r
    "javascript reference".match(/r/g);            //r r r
    "javascript reference".match(/w/g);            //null
}

12. normalize()

"문자열".normalize(정규식표현)
  • 주어진 문자열을 유니코드 정규화 방식에 따라 정규화된 형태로 반환합니다.
  • 주어진 값이 문자열이 아닌 경우에는 문자열로 변환후 정규화를 합니다.
  • NFC(normalization form C): 정준 분해를 수행한 후 재결합하여 정규화된 문자열을 반환합니다.
  • NFD(normalization form D): 정준 분해만 수행한 후 반환합니다.
  • NFKC(normalization form KC): NFC와 비슷하게 동작하지만, 호환성 문자를 정규화합니다.
  • NFKD(normalization form KD): NFD와 비슷하게 동작하지만, 호환성 문자를 정규화합니다.
{
    const str = 'Live';

    console.log(str.normalize());           // Live
    console.log(str.normalize('NFC'));      // Live (어째서? 이게 맞나?)
    console.log(str.normalize('NFD'));      // Live
    console.log(str.normalize('NFKC'));     // Live
    console.log(str.normalize('NFKD'));     // Live
}

13. padEnd()

"문자열".padEnd(매개변수,'추가하고자하는 문자열')
  • 현재 문자열에 다른 문자열을 채워, 주어진 길이를 만족하는 새로운 문자열을 반환합니다.
  • 채워넣기는 대상 문자열의 끝(우측)부터 적용됩니다.
  • 기존 문자열 길이 + 남는 자리
{
    const str = 'Live';

    console.log(str.padEnd(1));           // 'Live'
    console.log(str.padEnd(5));           // 'Live '
    console.log(str.padEnd(10));           // 'Live      '
    console.log(str.padEnd(1,'?'));           // 'Live'
    console.log(str.padEnd(5,'?'));           // 'Live?'
    console.log(str.padEnd(10,'?'));           // 'Live??????'
    
    console.log(str.padEnd(-1));           // 'Live'
    console.log(str.padEnd(-5));           // 'Live'
    console.log(str.padEnd(-10));           // 'Live'
    console.log(str.padEnd(-1,'?'));           // 'Live'
    console.log(str.padEnd(-5,'?'));           // 'Live'
    console.log(str.padEnd(-10,'?'));           // 'Live'
}

14. padStart()

"문자열".padStart(매개변수,'추가하고자하는 문자열')
  • 현재 문자열에 다른 문자열을 채워, 주어진 길이를 만족하는 새로운 문자열을 반환합니다.
  • 채워넣기는 대상 문자열의 시작(좌측)부터 적용됩니다.
  • 기존 문자열 길이 + 남는 자리
{
    const str = 'Live';

    console.log(str.padStart(1));           // 'Live'
    console.log(str.padStart(5));           // ' Live'
    console.log(str.padStart(10));           // '      Live'
    console.log(str.padStart(1,'?'));           // 'Live'
    console.log(str.padStart(5,'?'));           // '?Live'
    console.log(str.padStart(10,'?'));           // '??????Live'
    
    console.log(str.padStart(-1));           // 'Live'
    console.log(str.padStart(-5));           // 'Live'
    console.log(str.padStart(-10));           // 'Live'
    console.log(str.padStart(-1,'?'));           // 'Live'
    console.log(str.padStart(-5,'?'));           // 'Live'
    console.log(str.padStart(-10,'?'));           // 'Live'
}

15. repeat()

"문자열".repeat(매개변수,'추가하고자하는 문자열')
  • 문자열을 주어진 횟수마큼 반복해 새로운 문자열을 반환합니다.
  • 하나의 매개변수를 받으며 이 매개변수는 반복할 횟수를 나타내며 0이상의 정수여야합니다.
{
    cconst str = 'Live';

    console.log(str.repeat(1));           // 'Live'
    console.log(str.repeat(5));           // ' LiveLiveLiveLiveLive'
    console.log(str.repeat(10));           // 'LiveLiveLiveLiveLiveLiveLiveLiveLiveLive'
    console.log(str.repeat(1,'?'));           // 'Live'
    console.log(str.repeat(5,'?'));           // 'LiveLiveLiveLiveLive'
    console.log(str.repeat(10,'?'));           // 'LiveLiveLiveLiveLiveLiveLiveLiveLiveLive'
    
    // console.log(str.repeat(-1));           // ERROR(음수이기때문에)
}

18. search()

"문자열".search(검색값)
"문자열".search(정규식표현)
  • 문자열(정규식을) 검색하고, 위치값(숫자)을 반환합니다.
  • 문자열을 검색하여, 주어진 값과 일치하는 것이 없으면 -1을 반환합니다.
  • 대소문자를 구별합니다.
{
    "javascript reference".search("javascript");    //0
    "javascript reference".search("reference");    //11
    "javascript reference".search("r");             //6
    "javascript reference".search("a");             //1
    "javascript reference".search("jv");            //-1
    "javascript reference".search("J");             //-1
    "javascript reference".search(/reference/);    //11    //정규식 표현을 썼음
    "javascript reference".search(/Reference/);    //-1
    "javascript reference".search(/Reference/i);   //11   //i가 소문자로 인식해줌 reference
    "javascript reference".search(/[a-z]/g);        //0
    "자바스크립트".search(/[a-z]/g);                  //-1
}

19.slice()

"문자열".slice(시작위치,[끝나는 위치])
  • 시작하는 위치에서 종료 위치 ㅣ값을 추출하여, 새로운 문자열을 반환합니다.
 ['j','a','v','a','s','c','r','i','p','t'].slice(0);             // ['j','a','v','a','s','c','r','i','p','t']
    ['j','a','v','a','s','c','r','i','p','t'].slice(1);             // ['a','v','a','s','c','r','i','p','t']
    ['j','a','v','a','s','c','r','i','p','t'].slice(2);             // ['v','a','s','c','r','i','p','t']
    ['j','a','v','a','s','c','r','i','p','t'].slice(0, 1);          // ['j']
    ['j','a','v','a','s','c','r','i','p','t'].slice(1, 2);          // ['a']
    ['j','a','v','a','s','c','r','i','p','t'].slice(0, 2);          // ['j','a']
    ['j','a','v','a','s','c','r','i','p','t'].slice(0, 3);          // ['j','a','v']
    ['j','a','v','a','s','c','r','i','p','t'].slice(5, 10);         // ['c','r','i','p','t']
    ['j','a','v','a','s','c','r','i','p','t'].slice(5, -1);         // ['c','r','i','p']
    ['j','a','v','a','s','c','r','i','p','t'].slice(5, -2);         // ['c','r','i']
    ['j','a','v','a','s','c','r','i','p','t'].slice(-1);            // ['t']
    ['j','a','v','a','s','c','r','i','p','t'].slice(-2);            // ['p','t']
    ['j','a','v','a','s','c','r','i','p','t'].slice(-2);            // ['i','p','t']
    ['j','a','v','a','s','c','r','i','p','t'].slice(-3, -1)         // ['i','p']
    ['j','a','v','a','s','c','r','i','p','t'].slice(-3, -2)         // ['i']
    ['j','a','v','a','s','c','r','i','p','t'].slice(-3, -4)         // X

    "javascript".slice(0);          //javascript
    "javascript".slice(1);          //avascript
    "javascript".slice(2);          //vascript
    "javascript".slice(0,1);        //j
    "javascript".slice(1,2);        //a
    "javascript".slice(0,2);        //ja
    "javascript".slice(0,3);        //jav
    "javascript".slice(5,10);        //cript
    "javascript".slice(5,-1);        //crip
    "javascript".slice(5,-2);        //cri
    "javascript".slice(-1);        //t
    "javascript".slice(-2);        //pt
    "javascript".slice(-3);        //ipt
    "javascript".slice(-3,-1);        //ip
    "javascript".slice(-3,-2);        //i


    console.log("javascript".slice(0));
    

22.split()

"문자열".split(구분자, [제한])
  • 구분자를 이용하여, 여러개의 문자열(배열)을 반환합니다.
 "javascript".split("");                 //['j','a','v','a','s','c','r','i','p','t']
    "java script".split("");                //['java','script']
    "java scr ipt".split("");               //['java','scr','ipt']

    "javascript".split("" ,1);              //['j']
    "javascript".split("" ,2);              //['j','a']
    "javascript".split("" ,3);              //['j','a','v']

    "java script".split("" ,1);             //['java']
    "java script".split("" ,2);             //['java','script']
    
    "javascript".split("j");                //['','avascript']
    "javascript".split("a");                //['j','v','script']
    "javascript".split("e");                //['javascript']

    "java/scr/ipt".split("/");              //['java','scr','ipt']
    "java&scr!ipt".split("&");              //['java','scr!ipt']
    "java&scr!ipt".split("!");              //['javascr','ipt']
    "java&scr!ipt".split(/&|\!/);           //['java','scr','ipt']


    "javascript".split("").join()                       //j,a,v,a,s,c,r,i,p,t
    "javascript".split("").join("*")                    //j*a*v*a*s*c*r*i*p*t
    "javascript".split("").reverse().join()           //t,p,i,r,c,s,a,v,a,j(리버스는 배열에서만 사용 가능합니다. 그렇기 때문에 리버스가 조인 뒤로 올수 없습니다.)
    "javascript".split("").reverse().join("/")           //t/p/i/r/c/s/a/v/a/j


    console.log("javascript".split("").reverse().join());
    

30.trim()

"문자열"..trim()
  • 문자열의 앞/뒤 공백을 제거하고, 새로운 문자열을 반환합니다.

    "javascript".trim("");                 //javascript
    "javascript ".trim("");                 //javascript
    " javascript".trim("");                 //javascript
    " java script".trim("");                 //java script

    console.log("javascript".trim(""));

31.trimend()

"문자열"..trim()
  • 문자열의 뒤 공백을 제거하고, 새로운 문자열을 반환합니다.

    " javascript ".trimStart("");                 //javascript

    console.log("javascript".trimStart(""));

32.trimstart()

"문자열"..trim()
  • 문자열의 앞 공백을 제거하고, 새로운 문자열을 반환합니다.

    " javascript ".trimEnd("");                 //javascript
 
    console.log("javascript".trimEnd(""));