53 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			53 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								var baseToString = require('./_baseToString'),
							 | 
						||
| 
								 | 
							
								    castSlice = require('./_castSlice'),
							 | 
						||
| 
								 | 
							
								    hasUnicode = require('./_hasUnicode'),
							 | 
						||
| 
								 | 
							
								    isIterateeCall = require('./_isIterateeCall'),
							 | 
						||
| 
								 | 
							
								    isRegExp = require('./isRegExp'),
							 | 
						||
| 
								 | 
							
								    stringToArray = require('./_stringToArray'),
							 | 
						||
| 
								 | 
							
								    toString = require('./toString');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/** 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);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = split;
							 |