๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

JavaScript

[ Javascript ] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ String ์ •๋ฆฌ.

 

 

String

 

  String์€ ํ‘œ์ค€ ๋นŒํŠธ์ธ ๊ฐ์ฒด๋กœ, ๋ฌธ์ž์—ด(์›์‹œ ํƒ€์ž…)์„ ๋‹ค๋ฃฐ ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

 

 

 

 

 

 

 

 

 

String ํŠน์ง•

 

→ String ์ƒ์„ฑ์ž ํ•จ์ˆ˜์— ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜์ง€ ์•Š๊ณ  new ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ํ˜ธ์ถœํ•˜๋ฉด [[StringData]] ๋‚ด๋ถ€ ์Šฌ๋กฏ์— ๋นˆ ๋ฌธ์ž์—ด์„ ํ• ๋‹นํ•œ String ๋ž˜ํผ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

 

→ String ๋ž˜ํผ ๊ฐ์ฒด๋Š” ๋ฐฐ์—ด์ฒ˜๋Ÿผ lengthํ”„๋กœํผํ‹ฐ์™€ index(์ธ๋ฑ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆซ์ž๋กœ ๋œ ๋ฌธ์ž์—ด์˜ ํ”„๋กœํผํ‹ฐ ํ‚ค)๋ฅผ ๊ฐ–๊ณ , ๊ฐ๊ฐ์˜ ๋ฌธ์ž๋ฅผ ํ”„๋กœํผํ‹ฐ ๊ฐ’์œผ๋กœ ๊ฐ–๋Š” ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด ์ด๋ฉด์„œ, ์ดํ„ฐ๋Ÿฌ๋ธ” ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ index๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ๋ฌธ์ž์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

→ ๋ฌธ์ž์—ด์— index๋กœ ์ ‘๊ทผํ•˜์—ฌ ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด๋„ ์—๋Ÿฌ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š์ง€๋งŒ, ๋ฌธ์ž์—ด์€ ์›์‹œ ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

→ String ์ƒ์„ฑ์ž ํ•จ์ˆ˜์— ์ธ์ˆ˜๋กœ ๋ฌธ์ž์—ด์ด ์•„๋‹Œ ๊ฐ’์„ ์ „๋‹ฌํ•˜๋ฉด, ์ธ์ˆ˜๋ฅผ ๋ฌธ์ž์—ด๋กœ ๊ฐ•์ œ ๋ณ€ํ™˜ํ•œ ๋’ค String ๋ž˜ํผ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

 

→ new ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  String ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด String ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

→ length ํ”„๋กœํผํ‹ฐ๋Š” ๋ฌธ์ž์—ด์˜ ๋ฌธ์ž ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

 

 

 

 

 

 

 

String ๋ฉ”์„œ๋“œ

๊ฐ์ฒด์ธ ๋ฐฐ์—ด์—์„œ๋Š” ์›๋ณธ ๋ฐฐ์—ด์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์กด์žฌํ–ˆ์ง€๋งŒ, ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฐ’์ธ ์›์‹œ ๊ฐ’์˜ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃจ๋Š” String ๊ฐ์ฒด๋Š” ์›๋ณธ String ๋ž˜ํผ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฉ”์„œ๋“œ๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

๋ฉ”์„œ๋“œ ๋ช…  ์„ค๋ช…   ์ธ์ˆ˜ ๋ฐ˜ํ™˜ ๊ฐ’
String.prototype.indexOf ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ฒซ ๋ฒˆ์งธ index๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋กœ ๊ฒ€์ƒ‰์— ์‹คํŒจํ•˜๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 1) ๊ฒ€์ƒ‰ํ•  ๋ฌธ์ž์—ด
2) ๊ฒ€์ƒ‰์„ ์‹œ์ž‘ํ•  index(์˜ต์…˜)
index
or
-1
String.prototype.search ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ์ •๊ทœํ‘œํ˜„์‹๊ณผ ๋งค์น˜ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ผ์น˜ํ•˜๋Š” ๋ฌธ์ž์—ด์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 1) ์ •๊ทœ ํ‘œํ˜„์‹ index
or
-1
String.prototype.includes ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋ฌธ์ž์—ด์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ ํ›„ true ๋˜๋Š” false ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 1) ๊ฒ€์ƒ‰ํ•  ๋ฌธ์ž์—ด
2) ๊ฒ€์ƒ‰์„ ์‹œ์ž‘ํ•  index(์˜ต์…˜)
Boolean
String.prototype.startsWith ES6์—์„œ ๋„์ž…๋œ ๋ฉ”์„œ๋“œ๋กœ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋ฌธ์ž์—ด๋กœ ์‹œ์ž‘ํ•˜๋Š”์ง€ ํ™•์ธ ํ›„ true ๋˜๋Š” false ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 1) ๊ฒ€์ƒ‰ํ•  ๋ฌธ์ž์—ด
2) ๊ฒ€์ƒ‰์„ ์‹œ์ž‘ํ•  index(์˜ต์…˜)
Boolean
String.prototype.endsWith ES6์—์„œ ๋„์ž…๋œ ๋ฉ”์„œ๋“œ๋กœ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋ฌธ์ž์—ด๋กœ ๋๋‚˜๋Š”์ง€ ํ™•์ธ ํ›„ true ๋˜๋Š” false ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 1) ๊ฒ€์ƒ‰ํ•  ๋ฌธ์ž์—ด
2) ๊ฒ€์ƒ‰์„ ์‹œ์ž‘ํ•  index(์˜ต์…˜)
Boolean
String.prototype.charAt ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ index์— ์œ„์น˜ํ•œ ๋ฌธ์ž๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๊ฒ€์ƒ‰ํ•  index๊ฐ€ ๋ฌธ์ž์—ด์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ๊ฒฝ์šฐ ๋นˆ ๋ฌธ์ž์—ด(’’)์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
1) ๊ฒ€์ƒ‰ํ•  index String
String.prototype.substring ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ index์— ์œ„์น˜ํ•˜๋Š” ๋ฌธ์ž๋ถ€ํ„ฐ ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ index์— ์œ„์น˜ํ•˜๋Š” ๋ฌธ์ž์˜ ๋ฐ”๋กœ ์ด์ „ ๋ฌธ์ž๊นŒ์ง€์˜ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๊ฐ€ ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋ณด๋‹ค ํด ๊ฒฝ์šฐ, ๋‘ ์ธ์ˆ˜๊ฐ€ ๊ตํ™˜๋œ๋‹ค. ์ธ์ˆ˜๊ฐ€ 0๋˜๋Š” NaN์ธ ๊ฒฝ์šฐ๋Š” 0์œผ๋กœ ์ทจ๊ธ‰๋œ๋‹ค. ์ธ์ˆ˜๊ฐ€ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ ์ธ์ˆ˜๋Š” ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋กœ ์ทจ๊ธ‰๋œ๋‹ค.
1) ๋ฐ˜ํ™˜ ๋ฐ›์„ ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘ index
2) ๋ฐ˜ํ™˜ ๋ฐ›์„ ๋ฌธ์ž์—ด์˜ ๋งˆ์ง€๋ง‰ index
String
String.prototype.slice substring ๋ฉ”์„œ๋“œ์™€ ๋น„์Šทํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋‚˜ slice ๋ฉ”์„œ๋“œ๋Š” ์Œ์ˆ˜์ธ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ๋ฌธ์ž์—ด์˜ ๊ฐ€์žฅ ๋’ค์—์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๋ฌธ์ž์—ด์„ ์ž˜๋ผ๋‚ด ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

์Œ์ˆ˜์ธ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜๋ฉด ๋ฌธ์ž์—ด์˜ ๋งจ ๋’ค์—์„œ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๋ฌธ์ž์—ด์„ ์ž˜๋ผ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
1) ๋ฐ˜ํ™˜ ๋ฐ›์„ ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘ index
2) ๋ฐ˜ํ™˜ ๋ฐ›์„ ๋ฌธ์ž์—ด์˜ ๋งˆ์ง€๋ง‰ index
String
String.prototype.toUpperCase ๋ชจ๋‘ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€๊ฒฝํ•œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. x String
String.prototype.toLowerCase ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ๋ณ€๊ฒฝํ•œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. x String
String.prototype.trim ์•ž๋’ค์— ๊ณต๋ฐฑ ๋ฌธ์ž๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ, ๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

- String.prototype.trimStart : ์•ž์— ์žˆ๋Š” ๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•œ๋‹ค.

- String.prototype.trimEnd : ๋’ค์— ์žˆ๋Š” ๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•œ๋‹ค.
xโ€‹ String
String.prototype.repeat ES6์—์„œ ๋„์ž…๋œ ๋ฉ”์„œ๋“œ๋กœ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ์ •์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•ด ์—ฐ๊ฒฐํ•œ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ธ์ˆ˜์— ๋นˆ๊ฐ’ ๋˜๋Š” 0์„ ๋„ฃ์œผ๋ฉด ๋นˆ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์Œ์ˆ˜์ด๋ฉด RangeError๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.
1) ๋ฐ˜๋ณตํ•  ํšŸ์ˆ˜ String
String.prototype.replace ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋ฌธ์ž์—ด ๋˜๋Š” ์ •๊ทœํ‘œํ˜„์‹์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•œ ๋ฌธ์ž์—ด๋กœ ์น˜ํ™˜ํ•œ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

* ๊ฒ€์ƒ‰๋œ ๋ฌธ์ž์—ด์ด ์—ฌ๋Ÿฌ๊ฐœ์ผ ๊ฒฝ์šฐ, ์ฒซ ๋ฒˆ์งธ๋กœ ๊ฒ€์ƒ‰๋œ ๋ฌธ์ž์—ด๋งŒ ์น˜ํ™˜ํ•œ๋‹ค. ํŠน์ˆ˜ํ•œ ๊ต์ฒด ํŒจํ„ด์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ •๊ทœํ‘œํ˜„์‹์„ ์ „๋‹ฌํ•˜๋ฉด ํ•ด๋‹น ์ •๊ทœํ‘œํ˜„์‹์œผ๋กœ ๊ฒ€์ƒ‰ํ•œ๋‹ค. ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์น˜ํ™˜ ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.
1) ๊ฒ€์ƒ‰ํ•  ๋ฌธ์ž์—ด ๋˜๋Š” ์ •๊ทœํ‘œํ˜„์‹
2) ์น˜ํ™˜ํ•  ๋ฌธ์ž์—ด
String
String.prototype.split ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•  ๋ฌธ์ž์—ด ๋˜๋Š” ์ •๊ทœํ‘œํ˜„์‹์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ๊ตฌ๋ถ„ํ•œ ๋’ค ๋ถ„๋ฆฌ๋œ ๊ฐ ๋ฌธ์ž์—ด๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Array.prototype.reverse, Array.prototype.join ๋“ฑ์˜ Array๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
1) ๊ฒ€์ƒ‰ํ•  ๋ฌธ์ž์—ด ๋˜๋Š” ์ •๊ทœํ‘œํ˜„์‹
2) ๋ฐฐ์—ด์˜ ๊ธธ์ด ์ง€์ •
Array

 

 

 

 

 

์ถœ์ฒ˜ : ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ Deep Dive - ์ด์›…๋ชจ(์œ„ํ‚ค๋ถ์Šค)