You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.5 KiB
52 lines
1.5 KiB
import baseToString from './_baseToString.js'; |
|
import castSlice from './_castSlice.js'; |
|
import hasUnicode from './_hasUnicode.js'; |
|
import isIterateeCall from './_isIterateeCall.js'; |
|
import isRegExp from './isRegExp.js'; |
|
import stringToArray from './_stringToArray.js'; |
|
import toString from './toString.js'; |
|
|
|
/** Used as references for the maximum length and index of an array. */ |
|
var MAX_ARRAY_LENGTH = 4294967295; |
|
|
|
/** |
|
* Splits `string` by `separator`. |
|
* |
|
* **Note:** This method is based on |
|
* [`String#split`](https://mdn.io/String/split). |
|
* |
|
* @static |
|
* @memberOf _ |
|
* @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) { |
|
if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) { |
|
separator = limit = undefined; |
|
} |
|
limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0; |
|
if (!limit) { |
|
return []; |
|
} |
|
string = toString(string); |
|
if (string && ( |
|
typeof separator == 'string' || |
|
(separator != null && !isRegExp(separator)) |
|
)) { |
|
separator = baseToString(separator); |
|
if (!separator && hasUnicode(string)) { |
|
return castSlice(stringToArray(string), 0, limit); |
|
} |
|
} |
|
return string.split(separator, limit); |
|
} |
|
|
|
export default split;
|
|
|