trim.js (1381B)
1 var baseToString = require('./_baseToString'), 2 baseTrim = require('./_baseTrim'), 3 castSlice = require('./_castSlice'), 4 charsEndIndex = require('./_charsEndIndex'), 5 charsStartIndex = require('./_charsStartIndex'), 6 stringToArray = require('./_stringToArray'), 7 toString = require('./toString'); 8 9 /** 10 * Removes leading and trailing whitespace or specified characters from `string`. 11 * 12 * @static 13 * @memberOf _ 14 * @since 3.0.0 15 * @category String 16 * @param {string} [string=''] The string to trim. 17 * @param {string} [chars=whitespace] The characters to trim. 18 * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. 19 * @returns {string} Returns the trimmed string. 20 * @example 21 * 22 * _.trim(' abc '); 23 * // => 'abc' 24 * 25 * _.trim('-_-abc-_-', '_-'); 26 * // => 'abc' 27 * 28 * _.map([' foo ', ' bar '], _.trim); 29 * // => ['foo', 'bar'] 30 */ 31 function trim(string, chars, guard) { 32 string = toString(string); 33 if (string && (guard || chars === undefined)) { 34 return baseTrim(string); 35 } 36 if (!string || !(chars = baseToString(chars))) { 37 return string; 38 } 39 var strSymbols = stringToArray(string), 40 chrSymbols = stringToArray(chars), 41 start = charsStartIndex(strSymbols, chrSymbols), 42 end = charsEndIndex(strSymbols, chrSymbols) + 1; 43 44 return castSlice(strSymbols, start, end).join(''); 45 } 46 47 module.exports = trim;