Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
42 lines (39 sloc)
1.17 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import castSlice from './.internal/castSlice.js' | |
import hasUnicode from './.internal/hasUnicode.js' | |
import isRegExp from './isRegExp.js' | |
import stringToArray from './.internal/stringToArray.js' | |
/** Used as references for the maximum length and index of an array. */ | |
const MAX_ARRAY_LENGTH = 4294967295 | |
/** | |
* Splits `string` by `separator`. | |
* | |
* **Note:** This method is based on | |
* [`String#split`](https://mdn.io/String/split). | |
* | |
* @since 4.0.0 | |
* @category String | |
* @param {string} [string=''] The string to split. | |
* @param {RegExp|string} separator The separator pattern to split by. | |
* @param {number} [limit] The length to truncate results to. | |
* @returns {Array} Returns the string segments. | |
* @example | |
* | |
* split('a-b-c', '-', 2) | |
* // => ['a', 'b'] | |
*/ | |
function split(string, separator, limit) { | |
limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0 | |
if (!limit) { | |
return [] | |
} | |
if (string && ( | |
typeof separator === 'string' || | |
(separator != null && !isRegExp(separator)) | |
)) { | |
if (!separator && hasUnicode(string)) { | |
return castSlice(stringToArray(string), 0, limit) | |
} | |
} | |
return string.split(separator, limit) | |
} | |
export default split |