是否可以拆分字符串(可能使用正则表达式)以便每隔一个数字都是一对(从右端开始)?
// 1 [1]
// 12 [12]
// 123 [1,23]
// 1234 [1,2,34]
// 12345 [12,3,45]
// 123456 [1,23,4,56]
// 1234567 [1,2,34,5,67]
// 12345678 [12,3,45,6,78]
// 123456789 [1,23,4,56,7,89]
// 1234567890 [1,2,34,5,67,8,90]
我尝试反转字符串,然后添加两个字符和一个字符交替的 block ,直到字符串的末尾(前面)。然后再反过来。这主要有效,但存在缺陷(并非对所有情况都有效)。我也试过正则表达式
(\d\d)(\d)(\d\d)(\d)(\d\d)(\d)
但这也不起作用(具有讽刺意味的是,仅在正则表达式测试器中有效)——它太长了,但我需要它最多能处理 10 位数字。
最佳答案
没那么难:
从右边开始,我一次取 2 位数字,第二次取 1 位数字。
使用 切片
。然后我将使用 unshift
将它推到数组的开头。
我正在使用一个标志,以了解何时仅采用 1 个参数以及何时采用两个参数(对标志)
m(1)
m(12)
m(123)
m(1234)
m(12345)
m(123456)
m(12345678)
m(123456789)
m(1234567890)
function m(x){
x=x.toString()
var a=[]
var v;
var y=2
while(x){
v=x.slice(-y)
x=x.slice(0,-y)
y=y==1? 2:1
a.unshift(v)
}
console.log(a)
}
结果:
["1"]
["12"]
["1", "23"]
["1", "2", "34"]
["12", "3", "45"]
["1", "23", "4", "56"]
["12", "3", "45", "6", "78"]
["1", "23", "4", "56", "7", "89"]
["1", "2", "34", "5", "67", "8", "90"]
关于javascript - 将字符串拆分为具有交替一位和两位数字的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35187462/