Question

So I have this:

var str = A123B234C456;

I need to split it into comma separated chunks to return something like this:

A,123,B,234,c,456

I thought regex would be best for this but i keep getting stuck, essentially I tried to do a string replace but you cannot use regex in the second argument

I would love to keep it simple and clean and do something like this but it does not work:

str = str.replace(/[\d]+/, ","+/[\d]+/);  

but in the real world that would be too simple.

Any thoughts? Thanks in advance!

Was it helpful?

Solution

It may be more sensible to match the characters and then join them:

str = str.match(/(\d+|[^\d]+)/g).join(',');

But don't omit the quotes when you define the string:

var str = 'A123B234C456';

OTHER TIPS

Hi You can do it by replace using regex for example

var str = "A123B234C456";
str = str.replace(/([a-bA-B])/g, '$1,');

now str value will be 'A,123,B234,C456';

String split method can be called with a regexp. If the regexp has a capture group, the separator will be kept in the resulting array. So here you go :

let c = "A123B234C456";
let stringsAndNumbers = c.split(/(\d+)/); // ["A","123","B","234","C","456",""]

Since your example ends with numbers, the last element will be empty. Remove empty array elements :

let stringsAndNumbers = c.split(/(\d+)/).filter(el => el != ""); // ["A","123","B","234","C","456"]

Then join :

let stringsAndNumbers = c.split(/(\d+)/).filter(el => el != "").join(","); // "A,123,B,234,C,456"
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top