gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 11:33:40 26 4
gpt4 key购买 nike

我有一根绳子。

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 构造函数在正则表达式中传递变量。

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

或者

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

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

DEMO

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

DEMO

关于javascript - 从后面将字符串拆分为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31509071/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com