--- title: String.prototype.split() slug: Web/JavaScript/Reference/Global_Objects/String/split tags: - JavaScript - Method - Prototype - Reference - String translation_of: Web/JavaScript/Reference/Global_Objects/String/split ---
split()
메서드는 {{jsxref("String")}} 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나눕니다.
str.split([separator[, limit]])
주의: 구분자로 빈 문자열(""
)을 제공하면, 사용자가 인식하는 문자 하나(grapheme cluster) 또는 유니코드 문자(코드포인트) 하나씩으로 나누는 것이 아니라, UTF-16 코드유닛으로 나누게 되며 써로게이트 페어surrogate pair가 망가질 수 있습니다. 스택 오버플로우의 How do you get a string to a character array in JavaScript? 질문도 참고해 보세요.
separator
{{optional_inline}}separator
가 두 글자 이상일 경우 그 부분 문자열 전체가 일치해야 끊어집니다. separator
가 생략되거나 str
에 등장하지 않을 경우, 반환되는 배열은 원본 문자열을 유일한 원소로 가집니다. separator
가 빈 문자열일 경우 str
의 각각의 문자가 배열의 원소 하나씩으로 변환됩니다.limit
{{optional_inline}}끊어진 문자열의 최대 개수를 나타내는 정수입니다. 이 매개변수를 전달하면 split() 메서드는 주어진 separator
가 등장할 때마다 문자열을 끊지만 배열의 원소가 limit
개가 되면 멈춥니다. 지정된 한계에 도달하기 전에 문자열의 끝까지 탐색했을 경우 limit
개 미만의 원소가 있을 수도 있습니다. 남은 문자열은 새로운 배열에 포함되지 않습니다.
주어진 문자열을 separator
마다 끊은 부분 문자열을 담은 {{jsxref("Array")}}.
문자열에서 separator
가 등장하면 해당 부분은 삭제되고 남은 문자열이 배열로 반환됩니다. separator
가 등장하지 않거나 생략되었을 경우 배열은 원본 문자열을 유일한 원소로 가집니다. separator
가 빈 문자열일 경우, str
은 문자열의 모든 문자를 원소로 가지는 배열로 변환됩니다. separator
가 원본 문자열의 처음이나 끝에 등장할 경우 반환되는 배열도 빈 문자열로 시작하거나 끝납니다. 그러므로 원본 문자열에 separator
하나만이 포함되어 있을 경우 빈 문자열 두 개를 원소로 가지는 배열이 반환됩니다.
separator
가 포획 괄호capturing parentheses를 포함하는 정규표현식일 경우, separator
가 일치할 때마다 포획 괄호의 (정의되지 않은 경우도 포함한) 결과가 배열의 해당 위치에 포함됩니다.
{{Note("separator
가 배열일 경우 분할에 사용하기 전에 우선 문자열로 변환됩니다.")}}
split()
사용하기{{Note("빈 문자열이 주어졌을 경우 split()
은 빈 배열이 아니라 빈 문자열을 포함한 배열을 반환합니다. 문자열과 separator
가 모두 빈 문자열일 때는 빈 배열을 반환합니다.")}}
const myString = ''; const splits = myString.split(); console.log(splits); // ↪ [""]
다음 예제에서는 문자열을 주어진 구분자로 끊는 함수를 정의합니다. 문자열을 끊은 다음에는 (끊기 이전의) 원본 문자열과 사용한 구분자, 배열의 길이와 각 원소를 로그로 출력합니다.
function splitString(stringToSplit, separator) { var arrayOfStrings = stringToSplit.split(separator); console.log('The original string is: "' + stringToSplit + '"'); console.log('The separator is: "' + separator + '"'); console.log('The array has ' + arrayOfStrings.length + ' elements: ' + arrayOfStrings.join(' / ')); } var tempestString = 'Oh brave new world that has such people in it.'; var monthString = 'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec'; var space = ' '; var comma = ','; splitString(tempestString, space); splitString(tempestString); splitString(monthString, comma);
위 예제의 출력은 다음과 같습니다.
The original string is: "Oh brave new world that has such people in it." The separator is: " " The array has 10 elements: Oh / brave / new / world / that / has / such / people / in / it. The original string is: "Oh brave new world that has such people in it." The separator is: "undefined" The array has 1 elements: Oh brave new world that has such people in it. The original string is: "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec" The separator is: "," The array has 12 elements: Jan / Feb / Mar / Apr / May / Jun / Jul / Aug / Sep / Oct / Nov / Dec
다음 예제에서 split()
은 세미콜론 앞뒤에 각각 0개 이상의 공백이 있는 부분 문자열을 찾고, 있을 경우 문자열에서 세미콜론과 공백을 제거합니다. split()
의 결과로 반환된 배열은 nameList
에 저장됩니다.
var names = 'Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand '; console.log(names); var re = /\s*(?:;|$)\s*/; var nameList = names.split(re); console.log(nameList);
위 예제는 원본 문자열과 반환된 배열을 각각 한 줄씩 로그로 출력합니다.
Harry Trump ;Fred Barney; Helen Rigby ; Bill Abel ;Chris Hand [ "Harry Trump", "Fred Barney", "Helen Rigby", "Bill Abel", "Chris Hand", "" ]
다음 예제에서 split()
은 문자열을 공백으로 끊고 처음 3개의 문자열을 반환합니다.
var myString = 'Hello World. How are you doing?'; var splits = myString.split(' ', 3); console.log(splits);
위 예제의 로그 출력은 다음과 같습니다.
["Hello", "World.", "How"]
RegExp
를 사용해 구분자도 결과에 포함하기separator
가 포획 괄호 ()
를 포함하는 정규표현식일 경우, 포획된 결과도 배열에 포함됩니다.
var myString = 'Hello 1 word. Sentence number 2.'; var splits = myString.split(/(\d)/); console.log(splits);
위 예제의 로그 출력은 다음과 같습니다.
[ "Hello ", "1", " word. Sentence number ", "2", "." ]
var myString = 'this|is|a|Test'; var splits = myString.split(['|']); console.log(splits); //["this", "is", "a", "Test"] var myString = 'ca,bc,a,bca,bca,bc'; var splits = myString.split(['a','b']); // myString.split(['a','b'])은 myString.split(String(['a','b']))와 같다 console.log(splits); //["c", "c,", "c", "c", "c"]
split()
으로 문자열 뒤집기이 방법은 문자열 뒤집기에 효과적인 방법이 아닙니다.
var str = 'asdfghjkl'; var strReverse = str.split('').reverse().join(''); // 'lkjhgfdsa' // split()에서 반환한 배열에는 reverse()와 join()을 사용할 수 있다
문자열에 grapheme clusters가 있을 경우, 유니코드 플래그를 설정해도 오류를 일으킵니다(esrever 등의 라이브러리를 대신 사용하세요).
var str = 'résumé'; var strReverse = str.split(/(?:)/u).reverse().join(''); // => "́emuśer"
추가: {{jsxref("Operators/Comparison_Operators", "===", "#Identity_strict_equality_(===)")}} 연산자를 사용하면 원본 문자열이 팰린드롬인지 확인할 수 있습니다.
명세 | 상태 | 비고 |
---|---|---|
{{SpecName('ES3')}} | {{Spec2('ES3')}} | 초기 정의. JavaScript 1.1에 구현되었음. |
{{SpecName('ES5.1', '#sec-15.5.4.14', 'String.prototype.split')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES6', '#sec-string.prototype.split', 'String.prototype.split')}} | {{Spec2('ES6')}} | |
{{SpecName('ESDraft', '#sec-string.prototype.split', 'String.prototype.split')}} | {{Spec2('ESDraft')}} |
{{Compat("javascript.builtins.String.split")}}