【问题标题】:Splitting a string into chunks by numeric or alpha character with JavaScript使用 JavaScript 通过数字或字母字符将字符串拆分为块
【发布时间】:2024-05-18 17:35:01
【问题描述】:

我有这个:

var str = A123B234C456;

我需要将其拆分为逗号分隔的块以返回如下内容:

A,123,B,234,c,456

我认为regular expression 最适合这个,但我一直卡住。本质上,我尝试进行字符串替换,但您不能在第二个参数中使用正则表达式。

我很想保持简单和干净,并做这样的事情,但它不起作用:

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

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

有可能吗?

【问题讨论】:

    标签: javascript string split chunks


    【解决方案1】:

    匹配字符然后加入它们可能更明智:

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

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

    var str = 'A123B234C456';
    

    【讨论】:

    • 哇!有时你只是陷入了过度的复杂性。效果很好!
    【解决方案2】:

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

    如果正则表达式有捕获组,则分隔符将保留在结果数组中。

    所以你去:

    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"
    

    【讨论】:

      【解决方案3】:

      您可以使用正则表达式通过 replace() 来完成。

      例如,

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

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

      【讨论】: