string.split

split() ๋ฉ”์„œ๋“œ๋Š” ๋ฌธ์ž์—ด์„ ์ •๋ ฌ๋œ ํ•˜์œ„ ๋ฌธ์ž์—ด ์ง‘ํ•ฉ์œผ๋กœ ๋‚˜๋ˆ„๊ณ  ์ด๋Ÿฌํ•œ ํ•˜์œ„ ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด๋กœ ๋„ฃ์€ ๋‹ค์Œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋ถ„ํ• ์€ ํŒจํ„ด์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ํŒจํ„ด์€ ๋ฉ”์„œ๋“œ์˜ ํ˜ธ์ถœ์—์„œ ์ฒซ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ œ๊ณต๋œ๋‹ค.

const str = 'A cat playing with a mouse.';
const words = str.split(' '); // ["A", "cat", "playing", "with", "a", "mouse."];
const strCopy = str.split(); // ["A cat playing with a mouse."]

Syntax

str.split([separator[, limit]])

Parameters

separator (Optional)

๊ฐ ๋ถ„ํ• ์ด ๋ฐœ์ƒํ•˜๋Š” ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํŒจํ„ด์ด๋‹ค. separator ๋Š” ๋‹จ์ˆœํ•œ ๋ฌธ์ž์—ด์ด ๋  ์ˆ˜ ์žˆ๊ณ  ์ •๊ทœํ‘œํ˜„์‹์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

  • ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๊ฒฝ์šฐ๋Š” separator ๊ฐ€ ๋‹จ์ผ ๋ฌธ์ž์ผ ๋•Œ ์ด๋‹ค. ๊ตฌ๋ถ„๋œ ๋ฌธ์ž์—ด์„ ๋ถ„ํ• ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํƒญ ๊ตฌ๋ถ„ ๊ฐ’ (TSV)์„ ํฌํ•จํ•˜๋Š” ๋ฌธ์ž์—ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํƒญ ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ ๊ธฐํ˜ธ๋กœ ์ „๋‹ฌํ•˜์—ฌ ๊ตฌ๋ฌธ์„ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋‹ค. myString.split("\t")

  • separator ๊ฐ€ ๋‘๊ธ€์ž ์ด์ƒ์ผ ๊ฒฝ์šฐ, ๋ถ„ํ• ํ•˜๋ ค๋ฉด ํ•ด๋‹น ์ „์ฒด ๋ฌธ์ž์™€ ์ผ์น˜ํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

  • separator ๊ฐ€ ์ƒ๋žต๋˜๊ฑฐ๋‚˜ str์—์„œ ์—†๋Š” ๋ฌธ์ž์—ด์ผ ๊ฒฝ์šฐ, ์ „์ฒด ๋ฌธ์ž์—ด๋กœ ๊ตฌ์„ฑ๋œ ํ•˜๋‚˜์˜ ์š”์†Œ๋งŒ์ด ์žˆ๋Š” ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • separator ๊ฐ€ ๋ฌธ์ž์—ด์˜ ์‹œ์ž‘์ด๋‚˜ ๋์ง€์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋„ ์—ฌ์ „ํžˆ ๋ถ„ํ• ์˜ ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค. ๊ฒฐ๊ณผ๋Š” ๋ฐ˜ํ™˜๋œ ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ์œ„์น˜(ํ˜น์€ ๋งˆ์ง€๋ง‰)์—๋Š” ๋นˆ ๋ฌธ์ž์—ด์ด๋‹ค.

  • separator ๊ฐ€ ๋นˆ ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ, str์€ ๊ฐ๊ฐ์˜ UTF-16 ๋ฌธ์ž์˜ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜๋œ๋‹ค.

์ฃผ์˜: separator๊ฐ€ ๋นˆ ๋ฌธ์ž์—ด("")๋กœ ์ œ๊ณต๋˜๋ฉด, ์‚ฌ์šฉ์ž๊ฐ€ ์ธ์‹ํ•˜๋Š” ๋ฌธ์ž ํ•˜๋‚˜(grapheme cluster)๋˜๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž(์ฝ”๋“œํฌ์ธํŠธ) ํ•˜๋‚˜์”ฉ์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, UTF-16 ์ฝ”๋“œ ์œ ๋‹›์œผ๋กœ ๋‚˜๋ˆ„๊ฒŒ ๋˜๋ฉฐ surrogate pair๊ฐ€ ๋ง๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์˜ How do you get a string to a character array in JavaScript? ๋ฅผ ์ฐธ๊ณ ํ•˜์ž.

UTF-16 ์ฝ”๋“œ ์œ ๋‹›์ด ์•„๋‹Œ ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž(์ฝ”๋“œํฌ์ธํŠธ) ํ•˜๋‚˜์”ฉ ๋‚˜๋ˆ„๋Š” surrogate pair๊ฐ€ ๋ง๊ฐ€์ง€์ง€ ์•Š๊ณ  ๋ถ„ํ• ํ•˜๋Š” ๋ฐฉ๋ฒ•

  1. Spread syntax ์‚ฌ์šฉ

    [...'๐Ÿ˜๐Ÿ™๐Ÿš๐Ÿ›']; // ["๐Ÿ˜", "๐Ÿ™", "๐Ÿš", "๐Ÿ›"]
  2. Array.form

    Array.from('๐Ÿ˜๐Ÿ™๐Ÿš๐Ÿ›'); // ["๐Ÿ˜", "๐Ÿ™", "๐Ÿš", "๐Ÿ›"]
  3. string.prototype.split() ์™€ RegExp u flag ์‚ฌ์šฉํ•˜๊ธฐ

    '๐Ÿ˜๐Ÿ™๐Ÿš๐Ÿ›'.split(/(?=[\s\S])/u); // ["๐Ÿ˜", "๐Ÿ™", "๐Ÿš", "๐Ÿ›"]

    u flag๋Š” ์œ ๋‹ˆ์ฝ”๋“œ; ํŒจํ„ด์„ ์œ ๋‹ˆ์ฝ”๋“œ ์ฝ”๋“œ ํฌ์ธํŠธ์˜ ๋‚˜์—ด๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค. /(?=.)/u ๋Œ€์‹ ์— /(?=[\s\S])/u ๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ  . How to use JavaScript regex over multiple lines?

limit (Optional)

์Œ์ด ์•„๋‹Œ ์ •์ˆ˜๋กœ ๋‚˜๋ˆŒ ์ˆ˜๋ฅผ ์ œํ•œํ•œ๋‹ค. ์ด ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ œ๊ณต๋˜๋ฉด separator ๊ฐ€ ๋“ฑ์žฅํ•  ๋•Œ๋งˆ๋‹ค ๋ฌธ์ž์—ด์„ ๋Š์ง€๋งŒ ๋ฐฐ์—ด์˜ ์›์†Œ๊ฐ€ limit๊ฐœ๊ฐ€ ๋˜๋ฉด ๋ฉˆ์ถ˜๋‹ค. ๋‚จ์€ ํ…์ŠคํŠธ๋Š” ๋ฐฐ์—ด์— ํฌํ•จ๋˜์ง€ ์•Š๋Š”๋‹ค.

  • limit ์— ๋„๋‹ฌํ•˜๊ธฐ ์ „์— ๋ฌธ์ž์—ด ๋์— ๋„๋‹ฌํ•˜๋ฉด ๋ฐฐ์—ด์—๋Š” ์ œํ•œ๋ณด๋‹ค ์ ์€ ๋ฏธ๋งŒ์˜ ์›์†Œ๊ฐ€ ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค.

  • ๋งŒ์•ฝ limit ๋Š” 1 ์ด๋ฉด [str] ์ด ๋ฐ˜ํ™˜๋œ๋‹ค.

  • ๋งŒ์•ฝ limit ๋Š” 0 ์ด๋ฉด [] ์ด ๋ฐ˜ํ™˜๋œ๋‹ค.

Return value

๋ฌธ์ž์—ด์ด ์›์†Œ๋กœ ์ด๋ฃจ์–ด์ง„ Array๋กœ, ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์ด spearator ํฌ์ธํŠธ๋กœ ๋ถ„ํ• ๋œ ๊ฒƒ์ด๋‹ค.

Description

separator๊ฐ€ ๋ฐœ๊ฒฌ๋์„ ๋•Œ ๋ฌธ์ž์—ด์€ ์‚ญ์ œ๋˜๊ณ , ๋‚จ์€ ๋ฌธ์ž์—ด์€ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜๋œ๋‹ค. ๋งŒ์•ฝ separator ๊ฐ€ ํฌํš๊ด„ํ˜ธ(capturing parentheses)๋ฅผ ํฌํ•จํ•˜๋Š” ์ •๊ทœ์‹์ผ ๊ฒฝ์šฐ, separator ๊ฐ€ ์ผ์น˜ํ•  ๋•Œ ๋งˆ๋‹ค ํฌํš ๊ด„ํ˜ธ์˜ (์ •์˜๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๋„ ํฌํ•จํ•˜์—ฌ) ๊ฒฐ๊ณผ๊ฐ€ ๋ฐฐ์—ด์˜ ํ•ด๋‹น ์œ„์น˜์— ํฌํ•จ๋œ๋‹ค.

separator๊ฐ€ ๋ฐฐ์—ด์ธ ๊ฒฝ์šฐ, ํ•ด๋‹น ๋ฐฐ์—ด์€ ๋ฌธ์ž์—ด๋กœ ๊ฐ•์ œ ๋ณ€ํ™˜๋˜์–ด sperator๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

Examples

split() ์‚ฌ์šฉ

๋ฌธ์ž์—ด์ด ๋น„์˜€์„ ๋•Œ split()๋Š” ํ•˜๋‚˜์˜ ๋นˆ ๋ฌธ์ž์—ด์„ ํฌํ•จํ•œ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. (๋นˆ ๋ฐฐ์—ด์ด ์•„๋‹ˆ๋‹ค.) ๋งŒ์•ฝ separator๊ณผ ๋ฌธ์ž์—ด์ด ๋‘˜ ๋‹ค ๋นˆ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด ๋นˆ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

const myString = '';
myString.split(); // [""]
myString.split(''); // []

๋‹ค์Œ ์˜ˆ์ œ๋Š” ๋ฌธ์ž์—ด์„ ์ฃผ์–ด์ง„ separator๋กœ ๋Š๋Š” ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•œ๋‹ค. ๋ฌธ์ž์—ด์„ ๋Š์€ ๋‹ค์Œ์—๋Š” (๋Š๊ธฐ ์ด์ „์˜) ์›๋ณธ ๋ฌธ์ž์—ด๊ณผ ์‚ฌ์šฉํ•œ separator, ๋ฐฐ์—ด์˜ ๊ธธ์ด์™€ ์›์†Œ๋ฅผ log๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

function splitString(stringToSplit, separator) {
  const arrayOfStrings = stringToSplit.split(separator);

  console.log('์›๋ณธ ๋ฌธ์ž์—ด: ', stringToSplit);
  console.log('separator: ', separator);
  console.log('array: ', arrayOfStrings.length, 'elements: ', arrayOfStrings.join(' / '))
}

const wikiString = 'A cat playing with a mouse.';
const monthString = 'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec';

const space = ' ';
const comma = ',';

splitString(wikiString, space);
splitString(wikiString);
splitString(monthString, comma);

log ํ™•์ธํ•˜๊ธฐ

// splitString(wikiString, space);
์›๋ณธ ๋ฌธ์ž์—ด:  A cat playing with a mouse.
separator: 
array:  6 elements:  A / cat / playing / with / a / mouse.

// splitString(wikiString);
์›๋ณธ ๋ฌธ์ž์—ด:  A cat playing with a mouse.
separator:  undefined
array:  1 elements:  A cat playing with a mouse.

// splitString(monthString, comma);
์›๋ณธ ๋ฌธ์ž์—ด:  Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec
separator:  ,
array:  12 elements:  Jan / Feb / Mar / Apr / May / Jun / Jul / Aug / Sep / Oct / Nov / Dec

๋ฌธ์ž์—ด์— ๊ณต๋ฐฑ ์ œ๊ฑฐํ•˜๊ธฐ

๋‹ค์Œ ์˜ˆ์ œ๋Š” split()์€ 0๊ฐœ ์ด์ƒ์˜ ๊ณต๋ฐฑ์„ ์ฐพ๊ณ , ๊ทธ ๋‹ค์Œ์ด ์„ธ๋ฏธ์ฝœ๋ก ์ด๊ณ , ๊ทธ ๋‹ค์Œ์ด 0๊ฐœ ์ด์ƒ์˜ ๊ณต๋ฐฑ์„ ์ฐพ์•„๋‚ด๊ณ , ์ฐพ์œผ๋ฉด ๋ฌธ์ž์—ด์—์„œ ๊ณต๋ฐฑ๊ณผ ์„ธ๋ฏธ์ฝœ๋ก ์„ ์ œ๊ฑฐํ•œ๋‹ค. -> ์„ธ๋ฏธ์ฝœ๋ก ์˜ ์•ž๋’ค์˜ ๊ณต๋ฐฑ์„ ์ฐพ๊ณ  ๊ณต๋ฐฑ๊ณผ ์„ธ๋ฏธ์ฝœ๋ก ์„ ์ œ๊ฑฐํ•œ๋‹ค.

const names = 'harry Trump ;Fred Barney; helen Rigby ; Bill Abel ; Chris Hand ';

console.log(names);

const re = /\s*(?:;|$)\s*/
const nameList = names.split(re); // harry Trump ;Fred Barney; helen Rigby ; Bill Abel ; Chris Hand 

console.log(nameList); // ["harry Trump", "Fred Barney", "helen Rigby", "Bill Abel", "Chris Hand", ""]

์ œํ•œ๋œ ์ˆ˜์˜ ๋ถ„ํ•  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜

์ด ์˜ˆ์ œ๋Š” split()์€ ๋ฌธ์ž์—ด์—์„œ ๊ณต๋ฐฑ์„ ์ฐพ๊ณ , ๋ฐœ๊ฒฌ๋œ ์ตœ์ดˆ์˜ 3๊ฐœ์˜ ๋ถ„ํ•  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

const myString = 'A cat playing with a mouse.';
myString.split(' ', 3); // ["A", "cat", "playing"]

RegExp๋ฅผ ์‚ฌ์šฉํ•ด ๊ตฌ๋ถ„์ž๋„ ๊ฒฐ๊ณผ์— ํฌํ•จํ•˜๊ธฐ

separator๊ฐ€ ์บก์ณ๋ง ๊ด„ํ˜ธ() ๋ฅผ ํฌํ•จํ•˜๋Š” ์ •๊ทœํ‘œํ˜„์‹์ผ ๊ฒฝ์šฐ, ์บก์ณ๋ง๋œ ๊ฒฐ๊ณผ๋„ ๋ฐฐ์—ด์— ํฌํ•จ๋œ๋‹ค.

const mySting = 'Hello 1 word. Sentence number 2.';
// ์บก์ณ๋ง์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
myString.split(/\d/); // ["Hello ", " word. Sentence number ", "."] ์ˆซ์ž ๋ถ€๋ถ„์„ ์ฐพ์•„๋‚ด ์ œ๊ฑฐ๋˜๊ณ  ๋ถ„ํ• ๋˜์—ˆ๋‹ค.

// ์บก์ณ๋ง์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ
myString.split(/(\d)/); // ["Hello ", "1", " word. Sentence number ", "2", "."] ์ˆซ์ž๋ถ€๋ถ„๋„ ๊ฐ™์ด ํฌํ•จ๋˜์—ˆ๋‹ค.

\d ๋Š” character class์—์„œ 0๋ถ€ํ„ฐ 9์‚ฌ์ด์˜ ์ˆ˜์™€ ์ผ์น˜ํ•œ๋‹ค.

split()์œผ๋กœ ๋ฌธ์ž์—ด ๋’ค์ง‘๊ธฐ

const str = 'asdfghjk1';
str.split('').reverse().join(''); // "1kjhgfdsa"
// split()์—์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฐ์—ด์—๋Š” reverse()์™€ join()์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ๋ฐฉ๋ฒ•์€ ๋ฌธ์ž์—ด ๋’ค์ง‘๊ธฐ์— ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋‹ค.

๋ฌธ์ž์—ด์— grapheme clusters๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ, ์œ ๋‹ˆ์ฝ”๋“œ ํ”Œ๋ž˜๊ทธ๋ฅผ ์„ค์ •ํ•ด๋„ ์˜ค๋ฅ˜๋ฅผ ์ผ์œผํ‚ต๋‹ˆ๋‹ค.

(esrever ๋“ฑ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋ผ)

const str = 'rรฉsumรฉ';
str.split(/(?:)/u).reverse().join(''); // "รฉmusรฉr"

=== ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด palindrome(์•ž์—์„œ ๋ถ€ํ„ฐ ์ฝ์œผ๋‚˜ ๋’ค์—์„œ ๋ถ€ํ„ฐ ์ฝ์œผ๋‚˜ ๋™์ผํ•œ ๋‹จ์–ด)์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

Last updated

Was this helpful?