Question

for instance I have this string:

013227004871996 300234060903250 013227003498171 013227003493834 300234010640390

013227003512963 300234061401690 013227004865956 013226009142122 013227008391574

300234061405690 013227003400573 300234061404700 013227003501479 013227003394495

013227004876284 300234061349230 013227004876284 013227004862011

and what I want to happen is that to separate the entry if it encounters 01322, so for instance in the example it will have array[0] = 013227004871996 300234060903250, array[1] = 013227003498171, array[2] = 013227003493834

so basically I want to split it if the next entry starts with "013227".

Was it helpful?

Solution 3

var separator = '01322';

"013227004871996 300234060903250 013227003498171 013227003493834 300234010640390"
.split(separator)
.filter(function(item){
   return item;
}).map(function(item){
   return separator + item;
})

OTHER TIPS

This seems to work. Im matching everything that starts and is followed by 013227. Then I'm matching the last segment with .+

str.match(/013227.+?(?=013227)|.+/g)

Or even better:

str.split(/(?=013227)/)
var numbersStr = "013227004871996 300234060903250 013227003498171 013227003493834 300234010640390 013227003512963 300234061401690 013227004865956 013226009142122 013227008391574 300234061405690 013227003400573 300234061404700 013227003501479 013227003394495 013227004876284 300234061349230 013227004876284 013227004862011";

var pattern = new RegExp('01322[\\d]+');

var numbersArr = numbersStr.split(' ');

var numbersArrLength = numbersArr.length - 1;

for (var i = numbersArrLength; i >= 0; i--) {

    if (!pattern.test(numbersArr[i])) {

        numbersArr.splice(i, 1);

    }

}
var s = "013227004871996 300234060903250 013227003498171 013227003493834 300234010640390 "
+ "013227003512963 300234061401690 013227004865956 013226009142122 013227008391574 "
+ "300234061405690 013227003400573 300234061404700 013227003501479 013227003394495 "
+ "013227004876284 300234061349230 013227004876284 013227004862011";

var sp = s.split(" ");
var res = new Array();
var count=0;
sp.forEach(function(a) {
  if(a.search("01322") === 0) {
    if(res[count] === undefined) {
      res[count] = a;
    } else {
      ++count;
      res[count] = a;
    }
  } else {
    if(res[count] === undefined) {
      res[count] = a;
    } else {
      res[count]+=" "+a;
    }
  }
});

console.log(res);

[ '013227004871996 300234060903250', '013227003498171', '013227003493834 300234010640390', '013227003512963 300234061401690', '013227004865956', '013226009142122', '013227008391574 300234061405690', '013227003400573 300234061404700', '013227003501479', '013227003394495', '013227004876284 300234061349230', '013227004876284', '013227004862011' ]

try this

function niceslice( string, delimiter ){
    var result = string.split(delimiter);
    for(var i = 1; i < result.length; i++){
        result[i] = delimiter + result[i];
    }
    return result;
}

take note that this will not eliminate spaces in your example (but should be easily built in)

example usage

var str = 'anton albert andrew';
var output = niceslice( str, 'a' );
console.log( output ); // returns ['', 'anton ', 'albert ', 'andrew']

or in your case

var str = '013227004871996 300234060903250 013227003498171 013227003493834 300234010640390 013227003512963 300234061401690 013227004865956 013226009142122 013227008391574 300234061405690 013227003400573 300234061404700 013227003501479 013227003394495 013227004876284 300234061349230 013227004876284 013227004862011';
var output = niceslice( str, '013227' );
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top