javascript - 将字符串拆分为具有交替一位和两位数字的数组

标签 javascript arrays string split

是否可以拆分字符串(可能使用正则表达式)以便每隔一个数字都是一对(从右端开始)?

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

相关文章:

c++ - 模板中的数组和指针

javascript - 从查询字符串中删除 '+'

php - PHP/JavaScript/CSS 需要解析器精度吗?

arrays - 在 Ruby 中将数组破坏性地转换为数组

javascript - 按属性查找重复对象并使用 Javascript 或 UnderscoreJS 合并

swift - 新手 : Parameter that accepts either a String or a Substring (perhaps using StringProtocol)

c++ - 有什么方法可以消除此图形程序中的错误 "deprecated conversion from string"?

javascript - 无换行的文本区域的动态宽度

请求中的 Javascript、BackboneJS、oData 单引号

javascript - 在 angularJS 中显示 JSON 中选定的单选按钮