😎
Onemorebottlee's TIL
  • πŸ€“Introduce
  • πŸ“–DevLog
    • πŸ’£Error
      • npm ERR! Cannot read properties of null (reading 'edgesOut')
      • git
        • src refspec main does not match any
      • NextJS
        • No img element
        • ReferenceError : document is not defined
        • `next/image` Un-configured Host
  • πŸ“ΊLecture
    • Nomad Coders
      • 초보자λ₯Ό μœ„ν•œ λ¦¬λ•μŠ€ 101
        • #0 Introduction
        • #1 PURE REDUX: COUNTER
        • #2 PURE REDUX: TO DO LIST
        • #3 REACT REDUX
        • #4 Redux Toolkit
      • 바닐라 JS둜 κ·Έλ¦Ό μ•± λ§Œλ“€κΈ°
      • React JS λ§ˆμŠ€ν„° 클래슀
        • #2 Styled Componnents
        • #3 TypeScript
        • #4 Crypto Tracker
        • #5 State Management
        • #6 Trello
        • #7 ANIMATIONS
      • Next.js μ‹œμž‘ν•˜κΈ°
        • #0 INTRODUCTION
        • #1 FRAMEWORK OVERVIEW
        • #2 PRACTICE PROJECT
      • Typescript둜 블둝체인 λ§Œλ“€κΈ°
        • #1 Introduction
        • #2 Overview of TypeScript
        • #3 Functions
        • #4 Classes and Interfaces
        • #5 TypeScript Blockchain
      • SQL Master Class
        • #1 Introduction
        • #2 SQLite
        • #3 Data Definition Language
        • #4 Data Manipulation Language
        • #5 Subqueries and CTEs
        • #6 Indexes
        • #7 MySQL
        • #8 Foreign Keys
        • #9 JOINS
        • #10 Nomalization
        • #11 Events & Triggers
        • #12 Full-Text Indexes
        • #13 PostgreSQL
        • #14 Functions And Procedures
        • #15 Transactions
        • #16 Data Control Language
        • #17 PostgreSQL JSON Columns
        • #18 PostgreSQL Extensions
        • #19 MongoDB
        • #20 REDIS
        • #21 Javascript and Python Drivers
    • Udemy
      • TypeScript λ§ˆμŠ€ν„° with Webpack & React
        • [S1] μ†Œκ°œ
        • [S2] μ„€μΉ˜ 및 μ„€μ •
        • [S3] νƒ€μž… μ• λ„ˆν…Œμ΄μ…˜ 기초
        • [S4] ν•¨μˆ˜
        • [S5] 객체 νƒ€μž…
        • [S6] λ°°μ—΄ νƒ€μž…
        • [S7] μœ λ‹ˆμ˜¨νƒ€μž…
        • [S8] Tuple & Enum
        • [S9] μΈν„°νŽ˜μ΄μŠ€
        • [S10] TypeScript 컴파일러
        • [S11] λ―Έλ‹ˆ ν”„λ‘œμ νŠΈ DOM, νƒ€μž… 단언, 그리고 더 λ§Žμ€ λ‚΄μš©
        • [S12] Class
        • [S13] TS Class
        • [S14] Generics ⭐⭐⭐⭐⭐
        • [S15] Narrowing
        • [S16] Type Declarations
        • [S17] Module
        • [S18] Webpack κ³Ό TypeScript
        • [S19] React
    • λͺ¨λ‘λ₯Ό μœ„ν•œ 컴퓨터 κ³Όν•™ CS50
      • 1. μ»΄ν“¨νŒ… 사고
      • 2. Cμ–Έμ–΄
      • 3. λ°°μ—΄
      • 4. μ•Œκ³ λ¦¬μ¦˜
      • 5. λ©”λͺ¨λ¦¬
      • 6. 자료ꡬ쑰
    • μƒν™œμ½”λ”©
      • DATABASE
        • DATABASE1
  • πŸ“šBook
    • λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ Deep Dive
      • 1μž₯ ν”„λ‘œκ·Έλž˜λ°
      • 2μž₯ μžλ°”μŠ€ν¬λ¦½νŠΈλž€?
      • 3μž₯ μžλ°”μŠ€ν¬λ¦½νŠΈ 개발 ν™˜κ²½κ³Ό μ‹€ν–‰ 방법
      • 4μž₯ λ³€μˆ˜
      • 5μž₯ ν‘œν˜„μ‹κ³Ό λ¬Έ
      • 6μž₯ 데이터 νƒ€μž…
      • 7μž₯ μ—°μ‚°μž
      • 8μž₯ μ œμ–΄λ¬Έ
      • 9μž₯ νƒ€μž… λ³€ν™˜κ³Ό 단좕 평가 ⭐⭐⭐
      • 10μž₯ 객체 λ¦¬ν„°λŸ΄
      • 11μž₯ μ›μ‹œ κ°’κ³Ό 객체의 비ꡐ
      • 12μž₯ ν•¨μˆ˜ ⭐⭐⭐⭐
      • 13μž₯ μŠ€μ½”ν”„
      • 14μž₯ μ „μ—­ λ³€μˆ˜μ˜ 문제점
      • 15μž₯ let, const ν‚€μ›Œλ“œμ™€ 블둝 레벨 μŠ€μ½”ν”„ ⭐⭐⭐
      • 16μž₯ ν”„λ‘œνΌν‹° μ–΄νŠΈλ¦¬λ·°νŠΈ
      • 17μž₯ μƒμ„±μž ν•¨μˆ˜μ— μ˜ν•œ 객체 생성
      • 18μž₯ ν•¨μˆ˜μ™€ 일급 객체 ⭐⭐
      • 19μž₯ ν”„λ‘œν† νƒ€μž… ⭐⭐⭐⭐⭐
      • 20μž₯ strict mode
      • 21μž₯ 빌트인 객체 ⭐
      • 22μž₯ this ⭐⭐⭐
      • 23μž₯ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ ⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
      • 24μž₯ ν΄λ‘œμ € ⭐⭐⭐⭐⭐⭐⭐
      • 25μž₯ 클래슀
      • 26μž₯ ES6 ν•¨μˆ˜μ˜ μΆ”κ°€ κΈ°λŠ₯
      • 27μž₯ λ°°μ—΄ ⭐⭐⭐
      • 28μž₯ Number
      • 29μž₯ Math
      • 30μž₯ Date
      • 31μž₯ RegExp
      • 32μž₯ String
      • 33μž₯ 7번째 데이터 νƒ€μž… Symbol
      • 34μž₯ μ΄ν„°λŸ¬λΈ”
      • 35μž₯ μŠ€ν”„λ ˆλ“œ 문법
      • 36μž₯ λ””μŠ€νŠΈλŸ­μ²˜λ§ ν• λ‹Ή
      • 37μž₯ Setκ³Ό Map
      • 38μž₯ λΈŒλΌμš°μ €μ˜ λ Œλ”λ§ 과정⭐⭐⭐⭐⭐⭐⭐⭐
      • 39μž₯ DOM ⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
      • 40μž₯ 이벀트⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
      • 41μž₯ 타이머
      • 42μž₯ 비동기 ν”„λ‘œκ·Έλž˜λ° ⭐⭐⭐⭐⭐⭐⭐⭐
      • 43μž₯ Ajax
      • 44μž₯ REST API
      • 45μž₯ ν”„λ‘œλ―ΈμŠ€
      • 46μž₯ μ œλ„ˆλ ˆμ΄ν„°μ™€ async/await
      • 47μž₯ μ—λŸ¬ 처리
      • 48μž₯ λͺ¨λ“ˆ
      • 49μž₯ Babelκ³Ό Webpack을 μ΄μš©ν•œ ES6+/ES.NEXT 개발 ν™˜κ²½ ꡬ좕
    • λŸ¬λ‹ νƒ€μž…μŠ€ν¬λ¦½νŠΈ
      • Ch.1 μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ νƒ€μž…μŠ€ν¬λ¦½νŠΈλ‘œ
      • Ch.2 νƒ€μž… μ‹œμŠ€ν…œ
      • Ch.3 μœ λ‹ˆμ–Έκ³Ό λ¦¬ν„°λŸ΄
      • Ch.4 객체
      • Ch.5 ν•¨μˆ˜
      • Ch.6 λ°°μ—΄
      • Ch.7 μΈν„°νŽ˜μ΄μŠ€
      • Ch.8 클래슀
      • Ch.9 νƒ€μž… μ œν•œμž
      • Ch.10 μ œλ„€λ¦­
      • Ch.11 μ„ μ–Έ 파일
      • Ch.12 IDE κΈ°λŠ₯ μ‚¬μš©
      • Ch.13 ꡬ성 μ˜΅μ…˜
      • Ch.14 ꡬ문 ν™•μž₯
      • Ch.15 νƒ€μž… 운영
      • μš©μ–΄ 사전
    • μžλ°”μŠ€ν¬λ¦½νŠΈ μ™„λ²½ κ°€μ΄λ“œ
    • SQL in 10 Minutes
      • 1μž₯ SQL μ΄ν•΄ν•˜κΈ°
      • 2μž₯ 데이터 κ°€μ Έμ˜€κΈ°
      • 3μž₯ κ°€μ Έμ˜¨ 데이터 μ •λ ¬ν•˜κΈ°
      • 4μž₯ 데이터 필터링
      • 5μž₯ κ³ κΈ‰ 데이터 필터링
      • 6μž₯ μ™€μΌλ“œμΉ΄λ“œ 문자λ₯Ό μ΄μš©ν•œ 필터링
      • 7μž₯ 계산 ν•„λ“œ μƒμ„±ν•˜κΈ°
      • 8μž₯ 데이터 μ‘°μž‘ ν•¨μˆ˜ μ‚¬μš©ν•˜κΈ°
      • 9μž₯ 데이터 μš”μ•½
      • 10μž₯ 데이터 κ·Έλ£Ήν•‘
      • 11μž₯ μ„œλΈŒμΏΌλ¦¬ μ‚¬μš©ν•˜κΈ°
      • 12μž₯ ν…Œμ΄λΈ” 쑰인
      • 13μž₯ κ³ κΈ‰ ν…Œμ΄λΈ” 쑰인 μƒμ„±ν•˜κΈ°
      • 14μž₯ 쿼리 κ²°ν•©ν•˜κΈ°
      • 15μž₯ 데이터 μ‚½μž…ν•˜κΈ°
      • 16μž₯ 데이터 μ—…λ°μ΄νŠΈμ™€ μ‚­μ œ
      • 17μž₯ ν…Œμ΄λΈ” 생성과 μ‘°μž‘
      • 18μž₯ λ·° μ‚¬μš©ν•˜κΈ°
      • 19μž₯ μ €μž₯ ν”„λ‘œμ‹œμ € μ‚¬μš©ν•˜κΈ°
      • 20μž₯ νŠΈλžœμž­μ…˜ 처리 κ΄€λ¦¬ν•˜κΈ°
      • 21μž₯ μ»€μ„œ μ‚¬μš©ν•˜κΈ°
      • 22μž₯ κ³ κΈ‰ 데이터 μ‘°μž‘ μ˜΅μ…˜
    • 면접을 μœ„ν•œ CS 전곡지식 λ…ΈνŠΈ
      • 4 λ°μ΄ν„°λ² μ΄μŠ€
        • 4.1 λ°μ΄ν„°λ² μ΄μŠ€μ˜ κΈ°λ³Έ
    • 2023 이기적 SQL 개발자 μ΄λ‘ μ„œ + 기좜문제
      • 데이터 λͺ¨λΈλ§ 이해
        • S1. 데이터 λͺ¨λΈλ§
  • πŸ’»Study
    • CS 지식 λ°œν‘œ
      • 1회차
      • 2회차
      • 3회차
      • 4회차
      • 5회차
      • 6회차
      • 7회차
      • 8회차
      • 9회차
    • TypeScript Exercises
      • Ex 1
      • Ex 2
      • Ex 3
      • Ex 4
      • Ex 5
      • Ex 6
      • Ex 7
      • Ex 8
      • Ex 9
      • Ex 10
  • πŸ”„ETC
    • Article
      • Atomic Design Pattern
      • ν”„λ‘ νŠΈμ—”λ“œ 개발자
    • DATABASE
      • Oracle
        • CEIL() & FLOOR() - μ†Œμˆ˜μ  올림 & λ‚΄λ¦Ό
        • DUAL ν…Œμ΄λΈ” - μž„μ‹œ ν…Œμ΄λΈ”λ‘œ κ²°κ³Ό ν™•μΈν•˜κΈ°
    • Ubuntu
      • μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜ μ—…λ°μ΄νŠΈ
Powered by GitBook
On this page
  • 32.1 String μƒμ„±μž ν•¨μˆ˜
  • 32.1 length ν”„λ‘œνΌν‹°
  • 32.3 String λ©”μ„œλ“œ

Was this helpful?

  1. Book
  2. λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ Deep Dive

32μž₯ String

ν‘œμ€€ 빌트인 객체인 String은 μ›μ‹œ νƒ€μž…μΈ λ¬Έμžμ—΄μ„ λ‹€λ£° λ•Œ μœ μš©ν•œ ν”„λ‘œνΌν‹°μ™€ λ©”μ„œλ“œλ₯Ό μ œκ³΅ν•œλ‹€.

32.1 String μƒμ„±μž ν•¨μˆ˜

ν‘œμ€€ 빌트인 객체인 String κ°μ²΄λŠ” μƒμ„±μž ν•¨μˆ˜ 객체닀. λ”°λΌμ„œ new μ—°μ‚°μžμ™€ ν•¨κ»˜ ν˜ΈμΆœν•˜μ—¬ String μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 수 μžˆλ‹€.

인수λ₯Ό μ „λ‹¬ν•˜μ§€ μ•Šκ³  new μ—°μ‚°μžμ™€ ν•¨κ»˜ ν˜ΈμΆœν•˜λ©΄ 빈 λ¬Έμžμ—΄μ„ ν• λ‹Ήν•œ String 래퍼 객체λ₯Ό μƒμ„±ν•œλ‹€. 인수λ₯Ό μ „λ‹¬ν•˜κ³  new μ—°μ‚°μžμ™€ ν•¨κ»˜ ν˜ΈμΆœν•˜λ©΄ 인수둜 전달받은 λ¬Έμžμ—΄μ„ ν• λ‹Ήν•œ String 래퍼 객체λ₯Ό μƒμ„±ν•œλ‹€.

const strObj = new String();
console.log(strObj); // String {length: 0, [[PrimitiveValue]]: ""}

const strObj2 = new String('Han');
console.log(strObj2); // {0: "H", 1: "a", 2: "n", length: 3, [[PrimitiveValue]]: "Han"}

String 래퍼 κ°μ²΄λŠ” λ°°μ—΄κ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ length ν”„λ‘œνΌν‹°μ™€ 인덱슀λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 숫자 ν˜•μ‹μ˜ λ¬Έμžμ—΄μ„ ν”„λ‘œνΌν‹° ν‚€λ‘œ, 각 문자λ₯Ό ν”„λ‘œνΌν‹° κ°’μœΌλ‘œ κ°–λŠ” μœ μ‚¬ λ°°μ—΄ κ°μ²΄μ΄λ©΄μ„œ μ΄ν„°λŸ¬λΈ”μ΄λ‹€. λ”°λΌμ„œ λ°°μ—΄κ³Ό μœ μ‚¬ν•˜κ²Œ 인덱슀λ₯Ό μ‚¬μš©ν•˜μ—¬ 각 λ¬Έμžμ— μ ‘κ·Όν•  수 μžˆλ‹€.

단, λ¬Έμžμ—΄μ€ μ›μ‹œ κ°’μœΌλ‘œ λ³€κ²½ν•  수 μ—†λ‹€.

String μƒμ„±μž ν•¨μˆ˜μ˜ 인수둜 λ¬Έμžμ—΄μ΄ μ•„λ‹Œ 값을 μ „λ‹¬ν•˜λ©΄ 인수λ₯Ό λ¬Έμžμ—΄λ‘œ κ°•μ œ λ³€ν™˜ν•œ ν›„, [[StringData]] λ‚΄λΆ€λ³€μŠ¬λ‘―μ—ν™˜λœ λ¬Έμžμ—΄μ„ ν• λ‹Ήν•œ String 래퍼 객체λ₯Ό μƒμ„±ν•œλ‹€.

let strObj = new String(123);
console.log(strObj)
//String {0: "1", 1: "2", 2: "3", length: 3, [[PrimitiveValue]]: "123" }

strObj = new String(null);
console.log(strObj);
//String {0: "n", 1: "u", 2: "l", 3: "l", length: 4, [[PrimitiveValue]]: "null"}

new μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  String μƒμ„±μž ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λ©΄ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•œλ‹€. 이λ₯Ό μ΄μš©ν•˜μ—¬ λͺ…μ‹œμ μœΌλ‘œ νƒ€μž…μ„ λ³€ν™˜ν•˜κΈ°λ„ ν•œλ‹€.

String(1) // "1"
String(NaN) // "NaN"
String(Infinity) // "Infinity"

String(true) // "true"
String(false) // "false"

32.1 length ν”„λ‘œνΌν‹°

length ν”„λ‘œνΌν‹°λŠ” λ¬Έμžμ—΄μ˜ 문자 개수λ₯Ό λ°˜ν™˜ν•œλ‹€.

'Hello'.length // 5
'hi'.length // 2

String 래퍼 κ°μ²΄λŠ” λ°°μ—΄κ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ length ν”„λ‘œνΌν‹°λ₯Ό κ°–λŠ”λ‹€. 그리고 인덱슀λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 숫자λ₯Ό ν”„λ‘œνΌν‹° ν‚€λ‘œ, 각 문자λ₯Ό ν”„λ‘œνΌν‹° κ°’μœΌλ‘œ κ°€μ§€λ―€λ‘œ String 래퍼 κ°μ²΄λŠ” μœ μ‚¬ λ°°μ—΄ 객체닀.

32.3 String λ©”μ„œλ“œ

String κ°μ²΄μ—λŠ” 원본 String 래퍼 객체λ₯Ό 직접 λ³€κ²½ν•˜λŠ” λ©”μ„œλ“œκ°€ μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ”λ‹€. κ·Έλž˜μ„œ String 객체의 λ©”μ„œλ“œλŠ” μ–Έμ œλ‚˜ μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•œλ‹€. λ¬Έμžμ—΄μ€ λ³€κ²½ λΆˆκ°€λŠ₯ν•œ κ°’(immutable)ν•œ μ›μ‹œ 값이기 λ•Œλ¬Έμ— String 래퍼 객체도 읽기 μ „μš© 객체(read only)둜 μ œκ³΅λœλ‹€.

λ§Œμ•½ String 래퍼 객체가 읽기 μ „μš© 객체가 μ•„λ‹ˆλ©΄, λ³€κ²½λœ String 래퍼 객체λ₯Ό λ¬Έμžμ—΄λ‘œ 되돌릴 λ•Œ λ¬Έμžμ—΄μ΄ λ³€κ²½λœλ‹€. λ”°λΌμ„œ String 객체의 λͺ¨λ“  λ©”μ„œλ“œλŠ” String 래퍼 객체λ₯Ό 직접 λ³€κ²½ν•  수 μ—†κ³ , String 래퍼 객체의 λ©”μ„œλ“œλŠ” μ–Έμ œλ‚˜ μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ„ μƒμ„±ν•˜μ—¬ λ°˜ν™˜ν•œλ‹€.

32.3.1 String.prototype.indexOf

indexOf λ©”μ„œλ“œλŠ” λŒ€μƒ λ¬Έμžμ—΄μ—μ„œ 인수둜 전달받은 λ¬Έμžμ—΄μ„ 검색해 첫 번째 인덱슀λ₯Ό λ°˜ν™˜ν•œλ‹€. 검색에 μ‹€νŒ¨ν•˜λ©΄ -1을 λ°˜ν™˜ν•œλ‹€.

const str = "hello world"

str.indexOf("l") // 2
str.indexOf("or") // 7
str.indexOf("x") // -1 => 검색 μ‹€νŒ¨μ‹œ -1 을 λ°˜ν™˜ν•œλ‹€.

str.indexOf("l", 3) // 3 => 2번째 인수둜 검색을 μ‹œμž‘ν•  인덱슀λ₯Ό 전달할 수 μžˆλ‹€.

indexOf λ©”μ„œλ“œλŠ” λŒ€μƒ λ¬Έμžμ—΄μ— νŠΉμ • λ¬Έμžμ—΄μ΄ μ‘΄μž¬ν•˜λŠ”μ§€ 확인할 λ•Œ μœ μš©ν•˜λ‹€.

ES6μ—μ„œ λ„μž…λœ String.prototype.includes λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λ©΄ 가독성이 더 μ’‹λ‹€.

32.3.2 String.prototype.search

λŒ€μƒ λ¬Έμžμ—΄μ—μ„œ 인수둜 전달받은 μ •κ·œ ν‘œν˜„μ‹κ³Ό λ§€μΉ˜ν•˜λŠ” λ¬Έμžμ—΄μ„ 검색해 μΌμΉ˜ν•˜λŠ” λ¬Έμžμ—΄μ˜ 인덱슀λ₯Ό λ°˜ν™˜ν•œλ‹€. 검색에 μ‹€νŒ¨ν•˜λ©΄ -1을 λ°˜ν™˜ν•œλ‹€.

const str = 'hello world'

str.search(/o/) // 4
str.search(/x/) // -1

32.3.3 String.prototype.includes

ES6μ—μ„œ λ„μž…λœ includes λ©”μ„œλ“œλŠ” λŒ€μƒ λ¬Έμžμ—΄μ— 인수둜 전달받은 λ¬Έμžμ—΄μ΄ ν¬ν•¨λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•˜μ—¬ κ·Έ κ²°κ³Όλ₯Ό true λ˜λŠ” false 둜 λ°˜ν™˜ν•œλ‹€. 2번째 인수둜 검색 μ‹œμž‘ 인덱슀λ₯Ό 전달할 수 μžˆλ‹€.

const str = 'hello world'

str.includes('hello') // true
str.includes('wor') // true
str.includes('x') // false
str.includes() // false

// 2번째 인수둜 검색 μ‹œμž‘ 인덱슀λ₯Ό 전달할 수 μžˆλ‹€.
str.includes('l', 3) // true
str.includes('h', 3) // false

32.3.4 String.prototype.startsWith

ES6μ—μ„œ λ„μž…λœ startsWith λ©”μ„œλ“œλŠ” λŒ€μƒ λ¬Έμžμ—΄μ΄ 인수둜 전달받은 λ¬Έμžμ—΄λ‘œ μ‹œμž‘ν•˜λŠ”μ§€ ν™•μΈν•˜μ—¬ true λ˜λŠ” falseλ₯Ό λ°˜ν™˜ν•œλ‹€. 2번째 인수둜 검색 μ‹œμž‘ 인덱슀λ₯Ό 전달할 수 μžˆλ‹€.

const str = 'hello world'

str.startsWith("he") // true
str.startsWith('x') // false

str.startsWith(' ', 5) // true

32.3.5 String.prototype.endsWith

ES6μ—μ„œ λ„μž…λœ endsWith λ©”μ„œλ“œλŠ” λŒ€μƒ λ¬Έμžμ—΄μ΄ 인수둜 전달받은 λ¬Έμžμ—΄λ‘œ λλ‚˜λŠ”μ§€ ν™•μΈν•˜μ—¬ true λ˜λŠ” falseλ₯Ό λ°˜ν™˜ν•œλ‹€. 2번째 인수둜 검색할 λ¬Έμžμ—΄μ˜ 길이λ₯Ό 전달할 수 μžˆλ‹€.

const str = 'hello world'

str.endsWith("d") // true
str.endsWith("ld") // true
str.endsWith('lo', 5) // true

32.3.6 String.prototype.charAt

λŒ€μƒ λ¬Έμžμ—΄μ—μ„œ 인수둜 전달받은 μΈλ±μŠ€μ— μœ„μΉ˜ν•œ 문자λ₯Ό κ²€μƒ‰ν•˜μ—¬ λ°˜ν™˜ν•œλ‹€. μΈλ±μŠ€λŠ” λ¬Έμžμ—΄μ˜ λ²”μœ„ (0 ~ λ¬Έμžμ—΄ 길이-1) μ‚¬μ΄μ˜ μ •μˆ˜μ—¬μ•Ό ν•œλ‹€. μΈλ±μŠ€κ°€ λ¬Έμžμ—΄μ˜ λ²”μœ„λ₯Ό λ²—μ–΄λ‚œ μ •μˆ˜μΈ 경우 빈 λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•œλ‹€.

const str = 'hello world'

for(let i = 0; i < str.length; i++){
    console.log(str.charAt(i)) // h e l l o   w o r l d
}

32.3.7 String.prototype.substring

λŒ€μƒ λ¬Έμžμ—΄μ—μ„œ 첫 번째 인수둜 전달받은 μΈλ±μŠ€μ— μœ„μΉ˜ν•œ λ¬ΈμžλΆ€ν„° 두 번째 인수둜 전달받은 인덱슀의 μœ„μΉ˜ν•œ 문자의 λ°”λ‘œ 이전 λ¬ΈμžκΉŒμ§€ λΆ€λΆ„ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•œλ‹€. 두 번째 μΈμˆ˜λŠ” μƒλž΅ κ°€λŠ₯ν•˜λ©°, μ΄λ•Œ 첫 번째 μΈμˆ˜λΆ€ν„° λ§ˆμ§€λ§‰ λ¬ΈμžκΉŒμ§€ λΆ€λΆ„ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•œλ‹€.

const str = 'hello world'

str.substring(1,4) // "ell"
str.substring(1) // "ello World"

// 첫 번째 μΈμˆ˜λŠ” 두 번째 μΈμˆ˜λ³΄λ‹€ μž‘μ€ μ •μˆ˜μ—¬μ•Ό ν•˜μ§€λ§Œ λ‹€μŒκ³Ό 같이 인수λ₯Ό 전달해도 μ •μƒλ™μž‘ν•œλ‹€.
str.substring(4, 1) // "ell" => 첫 번째 인수 > 두 번째 인수인 경우 두 μΈμˆ˜λŠ” κ΅ν™˜λœλ‹€.
str.substring(-2) // "hello world" => 인수 < 0 or NaN 인 경우 0으둜 μ·¨κΈ‰λœλ‹€.
str.substring(1, 100) // "ello World" => 인수 > str.length 인 경우 λ¬Έμžμ—΄μ˜ 길이둜 μ·¨κΈ‰λœλ‹€.
str.substring(20) // ""

indexOf λ©”μ„œλ“œμ™€ ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ νŠΉμ • λ¬Έμžμ—΄μ„ κΈ°μ€€μœΌλ‘œ μ•žλ’€μ— μœ„μΉ˜ν•œ λΆ€λΆ„ λ¬Έμžμ—΄μ„ μ·¨ν•  수 μžˆλ‹€.

const str = 'hello world'
str.substring(0, str.indexOf(" ")) // "hello"
str.substring(str.indexOf(" ") + 1, str.length) // "world"

32.3.8 String.prototype.slice

substring λ©”μ„œλ“œμ™€ λ™μΌν•˜κ²Œ μž‘λ™ν•œλ‹€. 단, slice λ©”μ„œλ“œμ—λŠ” 음수인 인수λ₯Ό 전달해 λ’€μ—μ„œλΆ€ν„° λ¬Έμžμ—΄μ„ 자λ₯Ό 수 μžˆλ‹€.

const str = 'hello world'
str.slice(0, 5) // hello
str.slice(-5) //world

32.3.9 String.prototype.toUpperCase

λŒ€μƒ λ¬Έμžμ—΄μ„ λͺ¨λ‘ λŒ€λ¬Έμžλ‘œ λ³€κ²½ν•œ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•œλ‹€.

const str = 'HEllo world'
str.toUpperCase() // HELLO WORLD

32.3.10 String.prototype.toLowerCase

λŒ€μƒ λ¬Έμžμ—΄μ„ λͺ¨λ‘ μ†Œλ¬Έμžλ‘œ λ³€κ²½ν•œ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•œλ‹€.

const str = 'HEllo world'
str.toLowerCase() // hello world

32.3.11 String.prototype.trim

λŒ€μƒ λ¬Έμžμ—΄ μ•ž λ’€ 곡백 문자λ₯Ό μ œκ±°ν•œ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•œλ‹€.

const str = "    ahah   "
str.trim() // 'ahah'

trimStart, trimEnd λ₯Ό μ‚¬μš©ν•΄ μ•ž λ’€ 곡백을 μ œκ±°ν•  수 μžˆλ‹€.

32.3.12 String.prototype.repeat

ES6μ—μ„œ λ„μž…λœ repeat λ©”μ„œλ“œλŠ” λŒ€μƒ λ¬Έμžμ—΄μ„ 인수둜 전달받은 μ •μˆ˜λ§ŒνΌ λ°˜λ³΅ν•΄ μ—°κ²°ν•œ μƒˆλ‘œμš΄ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•œλ‹€. 인수둜 전달받은 μ •μˆ˜κ°€ 0 이면 빈 λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•˜κ³ , 음수이면 RangeErrorλ₯Ό λ°œμƒμ‹œν‚¨λ‹€. 인수λ₯Ό μƒλž΅ν•˜λ©΄ 기본값은 0이닀.

const str = 'abc'

str.repeat() // ''
str.repeat(0) // ''
str.repeat(1) // 'abc'
str.repeat(5) // 'abcabcabcabcabc'
str.repeat(5.5) // 'abcabcabcabcabc' 2.5 => 2
str.repeat(-1) // RangeError: Invalid count value

32.3.13 String.prototype.replace

λŒ€μƒ λ¬Έμžμ—΄μ—μ„œ 첫 번째 인수둜 전달받은 λ¬Έμžμ—΄ λ˜λŠ” μ •κ·œν‘œν˜„μ‹μ„ 검색해 두 번째 인수둜 μ „λ‹¬ν•œ λ¬Έμžμ—΄λ‘œ μΉ˜ν™˜ν•œ λ¬Έμžμ—΄μ„ λ°˜ν™˜ν•œλ‹€.

const str = 'hello world'
str.replace('world', 'Lee') // 'hello Lee'

// κ²€μƒ‰λœ λ¬Έμžμ—΄μ΄ μ—¬λŸ¬κ°œμΈ 경우, 첫 번째 κ²€μƒ‰λœ λ¬Έμžμ—΄λ§Œ μΉ˜ν™˜ν•œλ‹€.
const str2 = 'hello world world'
str2.replace('world', 'Lee') // 'hello Lee world'

// νŠΉμˆ˜ν•œ ꡐ체 νŒ¨ν„΄
const str3 = 'hello world'
str3.replace('world', '<strong>$&</strong>') // $& = κ²€μƒ‰λœ λ¬Έμžμ—΄

// μ •κ·œ ν‘œν˜„μ‹ 전달 κ°€λŠ₯
const str4 = 'hello hello'
str4.replace(/hello/gi, 'Lee') // 'Lee Lee'

두 번째 인수둜 μΉ˜ν™˜ ν•¨μˆ˜λ₯Ό 전달할 μˆ˜λ„ μžˆλ‹€. 첫 번째 인수둜 μ „λ‹¬ν•œ λ¬Έμžμ—΄ λ˜λŠ” μ •κ·œ ν‘œν˜„μ‹μ— λ§€μΉ˜ν•œ κ²°κ³Όλ₯Ό 두 번째 인수인 μΉ˜ν™˜ ν•¨μˆ˜μ˜ 인수둜 μ „λ‹¬ν•˜λ©΄μ„œ ν˜ΈμΆœν•˜κ³ , μΉ˜ν™˜ ν•¨μˆ˜κ°€ λ°˜ν™˜ν•œ 결과에 맀치 κ²°κ³Όλ₯Ό μΉ˜ν™˜ν•œλ‹€.

32.3.14 String.prototype.split

λŒ€μƒ λ¬Έμžμ—΄μ—μ„œ 첫 번째 인수둜 μ „λ‹¬ν•œ λ¬Έμžμ—΄ λ˜λŠ” μ •κ·œ ν‘œν˜„μ‹μ„ 검색해 λ¬Έμžμ—΄μ„ κ΅¬λΆ„ν•œ ν›„ λΆ„λ¦¬λœ 각 λ¬Έμžμ—΄λ‘œ 이루어진 배열을 λ°˜ν™˜ν•œλ‹€. 인수둜 빈 λ¬Έμžμ—΄μ„ μ „λ‹¬ν•˜λ©΄ 각 문자λ₯Ό λͺ¨λ‘ λΆ„λ¦¬ν•˜κ³ , 인수λ₯Ό μƒλž΅ν•˜λ©΄ λŒ€μƒ λ¬Έμžμ—΄ 전체λ₯Ό 단일 μš”μ†Œλ‘œ ν•˜λŠ” 배열을 λ°˜ν™˜ν•œλ‹€.

const str = 'How are you doing?'

str.split(' ') // [ 'How', 'are', 'you', 'doing?' ]
str.split(/\s/) // [ 'How', 'are', 'you', 'doing?' ]
str.split('') // [ 'H', 'o', 'w', ' ', 'a', 'r', 'e', ' ', 'y', 'o', 'u', ' ', 'd', 'o', 'i', 'n', 'g', '?' ]
str.split() // [ 'How are you doing?' ]

// 두 번째 인수둜 λ°°μ—΄μ˜ 길이λ₯Ό μ§€μ •ν•  수 μžˆλ‹€.
str.split(' ', 3) // [ 'How', 'are', 'you' ]

Previous31μž₯ RegExpNext33μž₯ 7번째 데이터 νƒ€μž… Symbol

Last updated 1 year ago

Was this helpful?

πŸ“š