ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

String.prototype.slice()
str.slice(start[, end])

String.prototype.substring()
str.substring(start[, end])

๊ณตํ†ต์ 

  • ๋‘˜ ๋‹ค 2๊ฐœ์˜ ์ธ์ž(start, end)๋ฅผ ๋ฐ›์ง€๋งŒ, ๋‘๋ฒˆ์งธ(end)๋Š” optional
  • start ์ธ๋ฑ์Šค๋ถ€ํ„ฐ end ์ธ๋ฑ์Šค "์ง์ „"๊นŒ์ง€ ์ถ”์ถœ
  • end ์ธ๋ฑ์Šค๊ฐ€ ์—†๋‹ค๋ฉด ๋งˆ์ง€๋ง‰๊นŒ์ง€
  • start = end ์ผ ๊ฒฝ์šฐ, ๋นˆ ๋ฌธ์ž์—ด ๋ฐ˜ํ™˜

์ฐจ์ด์ 

  • ์Œ์ˆ˜์ธ๋ฑ์Šค์ผ ๊ฒฝ์šฐ, slice()๋Š” ์—ญ๋ฐฉํ–ฅ์œผ๋กœ ์นด์šดํŠธ / substring() ์€ 0์œผ๋กœ ์น˜ํ™˜๋จ
  • start ๊ฐ€ end ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ, slice()๋Š” ๋นˆ ๋ฌธ์ž์—ด ๋ฐ˜ํ™˜ / substring() ์€ ๋งˆ์น˜ ๋‘ ๊ฐœ์˜ ์ธ์ž๋ฅผ ๋ฐ”๊พผ ๋“ฏ ์ž‘๋™
  • ์ธ์ž๊ฐ€ strLength ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ, substring()์€ strLength ๋กœ ์น˜ํ™˜ํ•ด์„œ ์ฒ˜๋ฆฌ / slice()๋Š” start ๊ฐ€ strLength ํฐ ๊ฒฝ์šฐ์—๋Š” ๋นˆ ๋ฌธ์ž์—ด ๋ฐ˜ํ™˜, end ๊ฐ€ strLength ํฐ ๊ฒฝ์šฐ์—๋Š” strLength ๋กœ ์น˜ํ™˜

 


 

start ์ธ๋ฑ์Šค๋ถ€ํ„ฐ, end "์ง์ „" ๊นŒ์ง€ ์„ธ๋Š” ๊ฒŒ ํ—ท๊ฐˆ๋ฆฐ๋‹ค๋ฉด
์•„๋ž˜์™€ ๊ฐ™์ด ๊ธ€์ž ์‚ฌ์ด์— ์ธ๋ฑ์Šค๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ , ๊ทธ ๋ฒ”์œ„ ์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ๋งŒ ์ถ”์ถœํ•˜๋Š” ๊ฑธ๋กœ ์…€ ์ˆ˜ ์žˆ๋‹ค.
๋‚˜๋Š” ์ด๋ ‡๊ฒŒ ์„ธ๋Š”๊ฒŒ ํ›จ์”ฌ ์ง๊ด€์ ์ด๊ณ  ๋น ๋ฅด๋‹ค. 

๋ช‡๊ฐ€์ง€ ์˜ˆ์ œ๋กœ ๋น„๊ตํ•ด๋ณด์•˜๋‹ค.

๋™์ผํ•œ ์ž…๋ ฅ๊ฐ’, ๋™์ผํ•œ ๊ฒฐ๊ณผ๊ฐ’์ด ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ

// start, end ๋ชจ๋‘ ์—†๋Š” ๊ฒฝ์šฐ
"CARROT".slice()        // result : "CARROT"
"CARROT".substring()    // result : "CARROT"

// start index ์–‘์ˆ˜ ํ•˜๋‚˜์ธ ๊ฒฝ์šฐ
"CARROT".slice(3)        // result : "ROT"
"CARROT".substring(3)    // result : "ROT"

// start === end ์ธ ๊ฒฝ์šฐ
"CARROT".slice(3, 3)        // result : ""
"CARROT".substring(3, 3)    // result : ""

๋™์ผํ•œ ์ž…๋ ฅ๊ฐ’, ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ’์ด ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ

// ์Œ์ˆ˜ ์ธ๋ฑ์Šค
"CARROT".slice(-2)        // result : "OT" -> ์—ญ๋ฐฉํ–ฅ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ์‹œ์ž‘
"CARROT".substring(-2)    // result : "CARROT" -> ์Œ์ˆ˜์ธ ๊ฒฝ์šฐ, 0์œผ๋กœ ์น˜ํ™˜

// start > end
"CARROT".slice(4,2)        // result : ""
"CARROT".substring(4,2)    // result : "RR" -> ๋งˆ์น˜ ๋‘ ๊ฐœ์˜ ์ธ์ž๋ฅผ ๋ฐ”๊พผ ๋“ฏ ์ž‘๋™

// ์Œ์ˆ˜ ์ธ๋ฑ์Šค2
"CARROT".slice(2, -2)        // result : "RR" -> start ๋Š” ์ •๋ฐฉํ–ฅ, end ๋Š” ์—ญ๋ฐฉํ–ฅ
"CARROT".substring(2, -2)    // result : "CA" -> ์Œ์ˆ˜๊ฐ€ 0์œผ๋กœ ์น˜ํ™˜, start>end ์ด๋ฏ€๋กœ swap

// ์ธ์ž๊ฐ€ strLength ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ
"CARROT".slice(10, 2)        // result : ""
"CARROT".substring(10, 2)    // result : "RROT" -> swap ๋œ ํ›„, 10์ด strLength๋กœ ์น˜ํ™˜

 

์ฐธ๊ณ  :

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/slice

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substring

๋Œ“๊ธ€