string.substring

substring() ๋ฉ”์„œ๋“œ๋Š” string ์˜ ์‹œ์ž‘ index์™€ ์ข…๋ฃŒ index ์ „๊นŒ์ง€ ํ˜น์€ ๋ฌธ์ž์—ด ๋ ๋ถ€๋ถ„์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

const str = 'Cats are the best';

str.substring(1, 3); // "at"
str.substring(2); // "ts are the best"

Syntax

str.substring(indexStart[, indexEnd])

Parameters

indexStart

๋ฐ˜ํ™˜๋œ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์— ํฌํ•จํ•  ์ฒซ๋ฒˆ์งธ ๋ฌธ์ž์˜ index

indexEnd (Optional)

๋ฐ˜ํ™˜๋œ ๋ถ€๋ถ„์˜ ๋ฌธ์ž์—ด์—์„œ ์ œ์™ธํ•  ์ฒซ๋ฒˆ์งธ ๋ฌธ์ž์˜ index

Return value

์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์˜ ์ง€์ •๋œ ๋ถ€๋ถ„์„ ํฌํ•จํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด

Description

substring() ๋ฉ”์„œ๋“œ๋Š” indexStart๋ถ€ํ„ฐ ์ถ”์ถœํ•˜์ง€๋งŒ indexEnd๋Š” optional์ด๋ผ ํฌํ•จํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

  • ๋งŒ์•ฝ indexEnd ๊ฐ€ ์ƒ๋žต๋œ ๊ฒฝ์šฐ, substring() ๋ฌธ์ž์—ด์˜ ๋๊นŒ์ง€ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • ๋งŒ์•ฝ indexStart๊ฐ€ indexEnd ์™€ ๊ฐ™์„ ๊ฒฝ์šฐ, substring() ๋นˆ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • ๋งŒ์•ฝ indexStart ๊ฐ€ indexEnd๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ, substring() ๋ฉ”์„œ๋“œ๋Š” ๋งˆ์น˜ ๋‘ ๊ฐœ์˜ ์ธ์ž๋ฅผ ๋ฐ”๊พผ ๋“ฏ ์ž‘๋™ํ•œ๋‹ค.

0๋ณด๋‹ค ์ž‘์€ ์ธ์ž๊ฐ’์„ ๊ฐ€์ง€๋Š” ๊ฒฝ์šฐ์—๋Š” 0์œผ๋กœ,

stringName.length๋ณด๋‹ค ํฐ ์ธ์ž ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๊ฒฝ์šฐ, stringName.length๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.

NaN ๊ฐ’์€ 0์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.

Examples

substring() ์‚ฌ์šฉํ•˜๊ธฐ

const anyString = 'Mozilla';

// M์„ ๋ฝ‘์•„๋ณด์ž!
anyString.substring(0, 1); // "M"
anyString.substring(1, 0); // "M" ์›ƒ๊ธฐ๋„น indexStart > indexEnd ๋•Œ๋ฌธ์— ๋‘ ๊ฐœ์˜ ์ธ์ž๋ฅผ ๋ฐ”๊พผ ๋“ฏ ์ž‘๋™ํ•œ๋‹ค.


// Mozill ๋ฝ‘๊ธฐ
anyString.substring(0, 6); // "Mozill"
anyString.substring(6, 0); // "Mozill"

// lla ๋ฝ‘๊ธฐ
anyString.substring(4); // "lla"
anyString.substring(4, 7); // "lla"
anyString.substring(7, 4); // "lla"

// Mozilla ๋ฝ‘๊ธฐ
anyString.substring(0); // "Mozilla"
anyString.substring(0, 7); // "Mozilla"
anyString.substring(0, 10); // "Mozilla"

length ์†์„ฑ๊ณผ ํ•จ๊ป˜ substring() ์‚ฌ์šฉํ•˜๊ธฐ

substring()๋ฉ”์„œ๋“œ์™€ length์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๋ฌธ์ž์—ด์˜ ๋งˆ์ง€๋ง‰ ๋ฌธ์ž๋ฅผ ์ถ”์ถœํ•œ๋‹ค. ์‹œ์ž‘ ๋ฐ ๋ index๋ฅผ ์•Œ ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฐฉ๋ฒ•์ด ๋” ํŽธํ•  ์ˆ˜ ์žˆ๋‹ค.

// ๋งˆ์ง€๋ง‰ 4๊ธ€์ž์ธ illa ์ถ”์ถœํ•˜๊ธฐ
let anyString = 'Mozilla';
anyString.substring(anyString.length - 4); // "illa"

// ๋งˆ์ง€๋ง‰ 5๊ธ€์ž์ธ zilla ์ถ”์ถœํ•˜๊ธฐ
anyString.substring(anyString.length - 5); // "zilla"

substring()๊ณผ substr()์˜ ์ฐจ์ด

substring()๊ณผ substr() ๋ฉ”์„œ๋“œ ์‚ฌ์ด์—๋Š” ๋ฏธ๋ฌ˜ํ•œ ์ฐจ์ด๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ํ˜ผ๋™ํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

substring() ์˜ index๋Š” ์‹œ์ž‘์œ„์น˜์™€ ์ข…๋ฃŒ ์œ„์น˜๋ฅผ ์ธ๋ฑ์Šค๋กœ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ, substr()์ธ์ˆ˜๋Š” ์‹œ์ž‘ ์œ„์น˜์™€ ๋ฌธ์ž์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

๋˜ํ•œ ECMAScript์—์„œ substr() ์€ ๋ ˆ๊ฑฐ์‹œ ๊ธฐ๋Šฅ์œผ๋กœ ๊ฐ„์ฃผ๋˜์–ด ์ดํ›„ ๋ฒ„์ „์—์„œ ์ œ๊ฑฐ ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฐ€๋Šฅํ•˜๋ฉด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

const text = 'Mozilla';
text.substring(2, 5); // 'zil'
text.substr(2, 3); // 'zil'

substring()๊ณผ slice()์˜ ์ฐจ์ด

substring()๊ณผ slice()๋Š” ๋ฐฉ๋ฒ•์€ ๊ฑฐ์˜ ๋™์ผํ•˜์ง€๋งŒ, ์Œ์ˆ˜ index์˜ ์ทจ๊ธ‰์— ๋Œ€ํ•ด ๋‘๊ฐ€์ง€ ๋ฏธ๋ฌ˜ํ•œ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

indexStart > indexEnd ์ผ ๊ฒฝ์šฐ substring()์€ ๋‘ ๊ฐœ์˜ index๋ฅผ ์Šค์™‘ํ•˜๊ณ , slice()๋Š” ๋นˆ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

const text = 'Mozilla';
text.substring(5, 2); // "zil"
text.slice(5, 2); // ""

์ธ์ž ํ•˜๋‚˜ ํ˜น์€ ๋ชจ๋‘๊ฐ€ ์Œ์ˆ˜ ๋˜๋Š” NaN์ธ ๊ฒฝ์šฐ, substring() ๋ฉ”์„œ๋“œ๋Š” ์ด๋ฅผ 0์œผ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.

text.substring(-5, 2); // "Mo"
text.substring(-5, -2); // ""

slice() ๋Š” ์ธ์ž๊ฐ€ NaN ์ธ ๊ฒฝ์šฐ 0์œผ๋กœ ์ทจ๊ธ‰ํ•˜์ง€๋งŒ, ์Œ์ˆ˜์ธ ๊ฒฝ์šฐ index๋ฅผ ๋’ค์—์„œ๋ถ€ํ„ฐ ๊ฑฐ๊พธ๋กœ ์„ธ์–ด ์ฐพ๋Š”๋‹ค.

๋งŒ์•ฝ ์ธ์ž๊ฐ€ -5๋ผ๋ฉด string.length - 5 ๋กœ ํ•ด์„œ ์ฐพ๋Š”๋‹ค.

text.slice(-5, 2); // 7(text.length) - 5 text.slice(2, 2) => ''
text.slice(-5, -2); // text.slice(2, 5) => "zil"

๋ฌธ์ž์—ด ๋‚ด์—์„œ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ๋Œ€์ฒด

๋‹ค์Œ ์˜ˆ์ œ๋Š” ๋ฌธ์ž์—ด์˜ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ๋ฐ”๊พผ๋‹ค. ๋‹จ๋… ๋ฌธ์ž์™€ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ๋ชจ๋‘ ๋ฐ”๊พผ๋‹ค.

'Brave New Word'๋ผ๋Š” ๋ฌธ์ž์—ด์„ 'Brave New Web'์œผ๋กœ ๋ฐ”๊พผ๋‹ค.

// ๋ฌธ์ž์—ด fullS์—์„œ "oldS"๋ฅผ "newS"๋กœ ๋Œ€์ฒด
function replaceString(oldS, newS, fullS) {
  for (let i = 0; i < fullS.length; ++i) {
    if(fullS.substring(i, i + oldS.length) === oldS) {
      fullS = fullS.substring(0, i) + newS + fullS.substring(i + oldS.length, fullS.length);
    }
  }
  return fullS
}

replaceString('World', 'web', 'Brave New World'); // "Brave New web"

oldS ์ž์ฒด๊ฐ€ newS์˜ ํ•˜์œ„ ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ (์˜ˆ: ์—ฌ๊ธฐ์„œ 'World'๋ฅผ 'otherWorld'๋กœ ๋Œ€์ฒดํ•˜๋ ค๊ณ  ์‹œ๋„ ํ–ˆ์„ ๊ฒฝ์šฐ) ๋ฌดํ•œ ๋ฃจํ”„๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

์•„ํ•˜..for๋ฌธ์ค‘์— fullS๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ .. ใ…Ž.. ๋‹ค์‹œ ํ…์ŠคํŠธ๊ฐ€ ๊ต์ฒด๋˜๊ณ ..ใ…Ž.. ๋˜ for๋ฌธ์ด ๋Œ์•„๊ฐ€๊ณ ..ใ…Ž text๊ฐ€ ๊ต์ฒด๋˜๊ณ  ใ…Žใ…Ž length๋Š” ๊ณ„์† ๊ธธ์–ด์ง€๊ณ  ใ…Žใ…Žใ…Ž

function replaceString(oldS, newS, fullS) {
  return fullS.split(oldS).join(newS);
}

replaceString('World', 'otherWorld', 'Brave New World'); // "Brave New otherWorld"

๋ฌด์กฐ๊ฑด 2๊ฐœ๋กœ ๋‚˜๋ˆ ์ง€๊ณ  ๊ทธ ์‚ฌ์ด์— newS๊ฐ€ ๋“ค์–ด๊ฐ€์„œ join๋˜๊ธฐ ๋•Œ๋ฌธ์—! ๋ฐ”๋€Œ๋Š” ๋ฌธ์ž์—ด์ด ์–ด๋””์— ์œ„์น˜ํ•˜๋˜ ์ƒ๊ด€ ์—†๋‹ค. ๐Ÿ˜ฎ

ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„ replace๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

Last updated

Was this helpful?