当前位置: 代码迷 >> JavaScript >> 从后面将字符串拆分成数组
  详细解决方案

从后面将字符串拆分成数组

热度:140   发布时间:2023-06-13 12:50:00.0

我有一个字符串。

var string = "31415926535897932384626433832795028841971693993751058209749445923078164";

我想将其从后面分成长度为10的数组。

我有:

function split(a) {
  return a.split( /(?=(?:..........)*$)/ ).map(function(x){return parseInt(x)});
}

这给了我想要的输出为:

[3, 1415926535, 8979323846, 2643383279, 5028841971, 6939937510, 5820974944, 5923078164]

问题:

  • 如何使上述函数动态化,以便可以将字符串分解为n个字符? (当前我正在添加/删除点)

  • 拆分时如何跳过第一个字符? (我希望第一个元素始终为3,因此第二个元素的长度可以为1到n)?

只需为大括号内的每个项目指定要获取的位数。 并请注意,您不能将变量传递给使用/作为分隔符的正则表达式。 您必须使用RegExp构造函数在regex中传递变量。

 var string = "31415926535897932384626433832795028841971693993751058209749445923078164"; function split(a,n) { return a.split( new RegExp("(?=(?:.{" + n + "})*$)" )).map(function(x){return parseInt(x)}); } alert(split(string, 10)) 

要么

您可以简单地使用match而不是split。

string.match(/(?!^.).{11}/gm)

 var string = "31415926535897932384626433832795028841971693993751058209749445923078164"; function split(a,n) { return a.match(new RegExp("(?!^.).{" + n + "}|^.", "gm")).map(function(x){return parseInt(x)}); } alert(split(string, 11)) 

如果您还想匹配其余字符,即开始时存在的字符和最后不存在的字符,则可以使用此正则表达式。

/(?!^.).{11}|^.|.+/gm

最简单的方法。.不使用RegExp var string =“ 31415926535897932384626433832795028841971693993751058209749445923078164”; var arr = new Array(); 而(!string.length <10){substr = string.substr(strlen(string)-10); 字符串= string.replace(substr,''); arr.push(substr); } var result_arr = arr.reverse();

请检查一下

var _mySplit = function(str, splitLength) {
    var _regEx = '';
    var startSubStringLength = str.length % splitLength
    if(startSubStringLength > 0) {
        _regEx = new RegExp("(^.{1," + startSubStringLength + "})|(.{1," + splitLength +  "})|(.{1,})", "g")
    }
    return str.match(_regEx)
}
  相关解决方案