B22 : ๋ฌธ์ž์—ด ์‹ฌํ™”

2025. 8. 21. 18:24ใ†Front-end/JavaScript

๋ฐ˜์‘ํ˜•

๋ชฉ์ฐจ

1. ๋ฌธ์ž์—ด

    1-1. ๋”ฐ์˜ดํ‘œ์˜ ์ข…๋ฃŒ

    1-2. ํŠน์ˆ˜ ๊ธฐํ˜ธ

    1-3. length : ๋ฌธ์ž์—ด ๊ธธ์ด

    1-4. ํŠน์ • ๊ธ€์ž์— ์ ‘๊ทผํ•˜๊ธฐ

    1-5. toLowerCase(), toUpperCase()

    1-6. ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ์ฐพ๊ธฐ : str.indexOf(substr, pos), includes, startsWith, endsWith

    1-7. ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ์ถ”์ถœ : substring, substr, slice


1. ๋ฌธ์ž์—ด

1. ๋”ฐ์˜ดํ‘œ์˜ ์ข…๋ฅ˜

๋ฌธ์ž์—ด์€ ์ž‘์€๋”ฐ์˜ดํ‘œ, ํฐ๋”ฐ์˜ดํ‘œ, ๋ฐฑํ‹ฑ์œผ๋กœ ๊ฐ์Œ€ ์ˆ˜ ์žˆ๋‹ค.

์ž‘์€๋”ฐ์˜ดํ‘œ์™€ ํฐ๋”ฐ์˜ดํ‘œ์˜ ๊ธฐ๋Šฅ์ƒ ์ฐจ์ด๋Š” ์—†๋‹ค.

 

ํ•˜์ง€๋งŒ ๋ฐฑํ‹ฑ์€ ๊ธฐ๋Šฅ์ด ๋ช‡ ๊ฐœ ์žˆ๋‹ค.

  • ์ค‘๊ฐ„์— ${ํ‘œํ˜„์‹} : ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด (template literal) ์‚ฝ์ž… ๊ฐ€๋Šฅ
  • ๋ฌธ์ž์—ด์„ ์—ฌ๋Ÿฌ ์ค„๋กœ ์ž‘์„ฑ ๊ฐ€๋Šฅ
  • ํ…œํ”Œ๋ฆฟ ํ•จ์ˆ˜(template function)์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    → func`string`๊ณผ ๊ฐ™์ด ๋ฐฑํ‹ฑ ๋ฐ”๋กœ ์•ž์— ํ•จ์ˆ˜๋ช…์„ ์จ์ฃผ๋ฉด, ์ด ํ•จ์ˆ˜๋Š” ๋ฐฑํ‹ฑ ๋‚ด ๋ฌธ์ž์—ด ์กฐ๊ฐ/ํ‘œํ˜„์‹ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๋ฅผ ์ธ์ˆ˜๋กœ ๋ฐ›์•„ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋จ (tagged template)
    ์ž์ฃผ ์‚ฌ์šฉ๋˜์ง€๋Š” ์•Š๋Š” ๊ธฐ๋Šฅ์ด๋‹ค

2. ํŠน์ˆ˜ ๊ธฐํ˜ธ

๋ฐฑ์Šฌ๋ž˜์‹œ(\)๋ฅผ ํ™œ์šฉํ•ด์„œ ํŠน์ˆ˜ ๋ฌธ์ž๋ฅผ ๋ฌธ์ž์—ด ์‚ฌ์ด์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

ํŠน์ˆ˜ ๋ฌธ์ž ์„ค๋ช…
\n ์ค„๋ฐ”๊ฟˆ
\r ์บ๋ฆฌ์ง€ ๋ฆฌํ„ด( ์บ๋ฆฌ์ง€ ๋ฆฌํ„ด๊ณผ ์ค„๋ฐ”๊ฟˆ ๋ฌธ์ž๋ฅผ ์กฐํ•ฉํ•ด ์ค„์„ ๋ฐ”๊ฟˆ)
\', \" ๋”ฐ์˜ดํ‘œ
\\ ์—ญ์Šฌ๋ž˜์‹œ
\t ํƒญ
\b, \f, \v ๋ฐฑ์ŠคํŽ˜์ด์Šค, ํผํ”ผ๋“œ, ์„ธ๋กœ ํƒญ (์š”์ฆ˜์—” ๊ฑฐ์˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ)
\xXX 16์ง„์ˆ˜ ์œ ๋‹ˆ์ฝ”๋“œ (z = \x7A)
\uXXXX UTF-16 ์ธ์ฝ”๋”ฉ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜๋Š” 16์ง„์ˆ˜ ์ฝ”๋“œ XXXX๋กœ ํ‘œํ˜„ํ•œ ์œ ๋‹ˆ์ฝ”๋“œ ๊ธฐํ˜ธ
 e.g. \u00A9๋Š” ์ €์ž‘๊ถŒ ๊ธฐํ˜ธ©์˜ ์œ ๋‹ˆ์ฝ”๋“œ์ด๋‹ค
\u{X...XXXXXX}
(โ‚ฉ~6๊ฐœ ์‚ฌ์ด์˜ 16์ง„์ˆ˜ ๊ธ€์ž)
UTF-32๋กœ ํ‘œํ˜„ํ•œ ์œ ๋‹ˆ์ฝ”๋“œ ๊ธฐํ˜ธ๋กœ, ๋ช‡๋ช‡ ํŠน์ˆ˜ํ•œ ๊ธ€์ž๋Š” ๋‘ ๊ฐœ์˜ ์œ ๋‹ˆ์ฝ”๋“œ ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด ์ธ์ฝ”๋”ฉ ๋˜์–ด
4๋ฐ”์ดํŠธ๋ฅผ ์ฐจ์ง€ํ•จ

 

alert( "\u00A9" ); // ©
alert( "\u{20331}" ); // ไฝซ, ์ค‘๊ตญ์–ด(๊ธด ์œ ๋‹ˆ์ฝ”๋“œ)
alert( "\u{1F60D}" ); // ๐Ÿ˜, ์›ƒ๋Š” ์–ผ๊ตด ๊ธฐํ˜ธ(๊ธด ์œ ๋‹ˆ์ฝ”๋“œ)

 

3. length : ๋ฌธ์ž์—ด ๊ธธ์ด

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

alert( `My\n`.length ); // 3 (\n์€ ๋ฌธ์ž์—ด ํ•˜๋‚˜๋กœ ์ทจ๊ธ‰๋จ)

 

 

4. ํŠน์ • ๊ธ€์ž์— ์ ‘๊ทผํ•˜๊ธฐ

๋ฌธ์ž์—ด ๋‚ด ํŠน์ • ์œ„์ทจ์˜ ๊ธ€์ž์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ๋Œ€๊ด„ํ˜ธ / str.charAt(pos)๋ฅผ ์ด์šฉํ•œ๋‹ค.

๋ณดํ†ต ๋Œ€๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•˜๋ฉฐ, charAt์€ ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ๋‚จ์•„์žˆ๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค.

์ ‘๊ทผํ•˜๋ ค๋Š” ์œ„์น˜์— ๊ธ€์ž๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ, []๋Š” undefined๋ฅผ, charAt์€ ๋นˆ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

let str = `Hello`;

// ์ฒซ ๋ฒˆ์งธ ๊ธ€์ž
alert( str[0] ); // H
alert( str.charAt(0) ); // H

// ๋งˆ์ง€๋ง‰ ๊ธ€์ž
alert( str[str.length - 1] ); // o

 

 

5. toLowerCase(), toUpperCase()

๋Œ€๋ฌธ์ž๋ฅผ ์†Œ๋ฌธ์ž๋กœ, ์†Œ๋ฌธ์ž๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€๊ฒฝ์‹œํ‚จ๋‹ค.

alert( 'ABC'.toLowerCase() );	// abc
alert( 'abc'.toUpperCase() );	// ABC

alert( 'Abc'[0].toLowerCase() );	// abc (ํ•œ ๊ฐœ๋งŒ ๋ณ€๊ฒฝ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค

 

6. ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ์ฐพ๊ธฐ : str.indexOf(substr, pos), includes, startsWith, endsWith

str.indexOf(substr, pos)

๋ฌธ์ž์—ด str์˜ pos๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ๋ถ€๋ถ„ ๋ฌธ์ž์—ด substr์ด ์–ด๋””์— ์œ„์น˜ํ•˜๋Š”์ง€ ์ฐพ์•„๋‚ธ๋‹ค.

์›ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ์ฐพ์œผ๋ฉด ๊ทธ ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์•„๋‹ˆ๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

let str = 'Widget with id';

alert( str.indexOf('Widget') );	// 0, str์€ 'Widget'์œผ๋กœ ์‹œ์ž‘
alert( str.indexOf("id") );	// 1, "id"๋Š” ์ฒซ๋ฒˆ์งธ ์œ„์น˜์—์„œ ๋ฐœ๊ฒฌ W"id"get
alert( str.indexOf("id", 2) );	// 12

 

str.includes(substr, pos)

str์— ๋ถ€๋ถ„ ๋ฌธ์ž์—ด substr์ด ์žˆ๋‹ค๋ฉด true, ์—†๋‹ค๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์œ„์น˜ ์ •๋ณด๋Š” ํ•„์š”์—†๊ณ , ํฌํ•จ ์—ฌ๋ถ€๋งŒ ์•Œ๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹๋‹ค.

 

๋‘๋ฒˆ์งธ ์ธ์ˆ˜ pos๋ฅผ ๋„˜๊ธฐ๋ฉด ํ•ด๋‹น ์œ„์น˜๋ถ€ํ„ฐ ๊ฒ€์ƒ‰ํ•œ๋‹ค.

 

alert( "Widget with id".includes("Widget") ); // true
alert( "Hello".includes("Bye") ); // false

alert( "Widget".includes("id") ); // true
alert( "Widget".includes("id", 3) ); // false

 

str.startsWith, str.endsWidth

๋ฌธ์ž์—ด str์ด ํŠน์ • ๋ฌธ์ž์—ด๋กœ ์‹œ์ž‘ํ•˜๋Š”์ง€, ๋๋‚˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค.

alert( "Widget".startsWith("Wid") ); // true
alert( "Widget".endsWith("get") ); // true

 

7. ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ์ถ”์ถœ : substring, substr, slice

str.slice(start [, end])

๋ฌธ์ž์—ด์˜ start๋ถ€ํ„ฐ end๊นŒ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋‘๋ฒˆ์งธ ์ธ์ˆ˜๊ฐ€ ์ƒ๋žต๋œ ๊ฒฝ์šฐ, ๋ช…์‹œํ•œ ์œ„์น˜๋ถ€ํ„ฐ ๋ฌธ์ž์—ด ๋๊นŒ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

let str = "stringify";
alert( str.slice(0, 5) ); // 'strin', 0๋ฒˆ์งธ๋ถ€ํ„ฐ 5๋ฒˆ์งธ - 1 ์œ„์น˜๊นŒ์ง€
alert( str.slice(0, 1) ); // 's', 0๋ฒˆ์งธ๋ถ€ํ„ฐ 1๋ฒˆ์งธ - 1 ์œ„์น˜๊นŒ์ง€
  • ์ธ์ž๋กœ ์Œ์ˆ˜๋ฅผ ๋„ฃ์„ ์ˆ˜๋„ ์žˆ๋‹ค. ์Œ์ˆ˜๋ฅผ ๋„˜๊ธฐ๋ฉด ๋ฌธ์ž์—ด ๋’ท๋ถ€๋ถ„๋ถ€ํ„ฐ ์นด์šดํŒ…์„ ์‹œ์ž‘ํ•œ๋‹ค.
    alert( str.slice(-4, -1) ); // gif

 

str.substring(start [, end])

start์™€ end ์‚ฌ์ด์˜ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

slice์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ start๊ฐ€ end๋ณด๋‹ค ์ปค๋„ ๊ดœ์ฐฎ๋‹ค๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  substring์€ ์Œ์ˆ˜๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. (0์œผ๋กœ ์ฒ˜๋ฆฌ๋จ)

let str = "stringify";

// ๋™์ผํ•œ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜
alert( str.substring(2, 6) ); // "ring"
alert( str.substring(6, 2) ); // "ring"

// slice๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅด๋‹ค.
alert( str.slice(2, 6) ); // "ring" (๊ฐ™์Œ)
alert( str.slice(6, 2) ); // "" (๋นˆ ๋ฌธ์ž์—ด)

 

 

str.substr(start [, length])

start๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด length๊ฐœ์˜ ๊ธ€์ž๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋ ์œ„์น˜๊ฐ€ ์•„๋‹Œ ๊ธธ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ž์—ด์„ ์ถ”์ถœํ•œ๋‹ค๋Š” ์ ์—์„œ ์œ„์˜ ๋‘ ๋ฉ”์„œ๋“œ์™€ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

let str = "stringify";
alert( str.substr(2, 4) );	// ring, 2~4๊ฐœ

let str = "stringify";
alert( str.substr(-4, 2) );	// gi (๋’ค์—์„œ๋ถ€ํ„ฐ 4๋ฒˆ์งธ ์œ„์น˜๋กœ๋ถ€ํ„ฐ 2๊ฐœ)

 

 

 

 

์ฐธ๊ณ 

๋ฐ˜์‘ํ˜•