Skip to content

'split' filter for string to transform it as Array? #241

@marchrius

Description

@marchrius

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;
  }
}

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions