使用JavaScript将字符串按数字或字母字符分成块

3

我有这个:

var str = A123B234C456;

我需要将它分成逗号分隔的块,以返回类似于这样的内容:
A,123,B,234,c,456

我认为 正则表达式 是最适合的,但我一直卡在这里。本质上,我尝试进行字符串替换,但是你不能在第二个参数中使用正则表达式。
我希望保持简单和清晰,像这样做一些事情,但它不起作用:
str = str.replace(/[\d]+/, ","+/[\d]+/);

但在现实世界中,这会太简单了。

这是可能的吗?

3个回答

7
可能更明智的做法是匹配字符然后将它们连接起来:
str = str.match(/(\d+|[^\d]+)/g).join(',');

但是在定义字符串时不要省略引号:

var str = 'A123B234C456';

哇!有时候你会被过度复杂的事情所困扰。那个完美地运作了! - Paul

3

字符串分割方法可以使用正则表达式调用。

如果正则表达式有一个捕获组,则分隔符将保留在生成的数组中。

因此,这里是代码:

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

你可以使用replace()函数和正则表达式来实现。

例如,

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

现在str的值将是'A,123,B234,C456'。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接