-
Notifications
You must be signed in to change notification settings - Fork 329
Closed
Labels
Description
An example:
angular.module('app').filter('split', splitFilterFactory);
function splitFilterFactory() {
return function splitAfterN(stringToSplit, splitString, afterN) {
afterN = angular.isNumber(afterN) && afterN >= 0 ? afterN : 0;
var retArray = (stringToSplit || '').split((splitString || ''));
if (afterN > 0 && afterN <= retArray.length) {
var splitted = [retArray.splice(0, afterN), retArray.splice(0)];
retArray.push(splitted[0].join(splitString));
retArray.push.apply(retArray, splitted[1]);
}
return retArray;
}
}
EDIT
using regexp
angular.module('app').filter('split', splitFilterFactory);
function splitFilterFactory() {
return function splitAfterN(stringToSplit, splitString, afterN) {
afterN = angular.isNumber(afterN) && afterN >= 0 ? afterN : 0;
splitString = splitString || '';
var regexp = new RegExp(splitString, "g"),
numberOfSplitString = stringToSplit.match(regexp).length,
skip = stringToSplit.length / numberOfSplitString * afterN;
if (afterN >= numberOfSplitString) {
return [stringToSplit];
}
skip = stringToSplit.indexOf(splitString, skip);
var retArray = stringToSplit.substr(skip).split(splitString);
retArray.splice(0, 1, stringToSplit.substr(0, skip));
return retArray;
}
}