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

时间:2015-07-20 04:54:52

标签: javascript arrays string numbers

我有一个字符串。

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)?

3 个答案:

答案 0 :(得分:6)

只需指定花括号内每个项目的数字位数。请注意,您无法将变量传递给使用var myobject = JSON.parse(msg.data); myobject.name = "haseeb"; 作为分隔符的正则表达式。您必须使用/构造函数在regex中传递变量。



RegExp




OR

您可以简单地使用匹配而不是拆分。

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

DEMO



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))

DEMO

答案 1 :(得分:1)

简单方法..不使用RegExp     var string =" 31415926535897932384626433832795028841971693993751058209749445923078164&#34 ;;     var arr = new Array();     while(!string.length< 10){         substr = string.substr(strlen(string)-10);         string = string.replace(substr,'');         arr.push(SUBSTR);     }     var result_arr = arr.reverse();

答案 2 :(得分:1)

请检查

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)
}