Разбиение строки на куски по числовому или буквенному символу с помощью Javascript - PullRequest
2 голосов
/ 19 мая 2011

Итак, у меня есть это:

var str = A123B234C456;

Мне нужно разделить его на разделенные запятыми куски, чтобы получить что-то вроде этого:

A,123,B,234,c,456

Я думал, что регулярное выражение будет лучшим для этого, но я продолжаю застрять, по сути, я пытался заменить строку, но вы не можете использовать регулярное выражение во втором аргументе

Я бы хотел сохранить простоту и чистоту и сделать что-то подобное, но это не работает:

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

но в реальном мире это было бы слишком просто.

Есть мысли? Заранее спасибо!

Ответы [ 3 ]

6 голосов
/ 19 мая 2011

Может быть более разумно сопоставлять символы и затем соединять их:

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

Но не опускайте кавычки при определении строки:

var str = 'A123B234C456';
0 голосов
/ 04 июля 2019

Метод разделения строк можно вызывать с помощью регулярного выражения. Если регулярное выражение имеет группу захвата, разделитель будет сохранен в результирующем массиве. Итак, поехали:

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

Поскольку ваш пример заканчивается цифрами, последний элемент будет пустым. Удалить пустые элементы массива:

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

Тогда присоединяйтесь:

let stringsAndNumbers = c.split(/(\d+)/).filter(el => el != "").join(","); // "A,123,B,234,C,456"
0 голосов
/ 19 мая 2011

Привет. Вы можете сделать это путем замены с помощью регулярных выражений, например:

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

Теперь значение str будет 'A, 123, B234, C456';

...