将字符串拆分为数组,替换为1&两位数

时间:2016-02-03 20:52:40

标签: javascript arrays string split

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

ggsave

我尝试倒转字符串&然后添加交替的两个和一个字符的块直到字符串的结尾(前面)。然后再次反转它。这主要起作用,但它有缺陷(并不是适用于所有情况)。我也试过了正则表达式

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

但这也不起作用(只有在正则表达式测试人员中具有讽刺意味) - 它太长了但是我需要它才能最多使用10位数字。

2 个答案:

答案 0 :(得分:3)

没那么难:

从右边开始,我将取一次2位数,第二次取1位数。 使用substring()。然后我将使用slice在数组的开头推送它。

我使用标志,知道何时只采用1个参数,何时采用两个参数(对标志)

unshift

结果:

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 :(得分:1)

我最终到了那里。

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

var results = "";

pairUp(1)
pairUp(12)
pairUp(123)
pairUp(1234)
pairUp(12345)
pairUp(123456)
pairUp(12345678)
pairUp(123456789)
pairUp(1234567890)

alert(results);

function pairUp(num)
{
  var s = num.toString();
  s = s.split("").reverse().join("");
  var a = s.split("");

  var r = []; // our results array
  count = 0;

  for (var i = 0; i <= a.length -1; i++)
  {
    temp = a[count];

    if ((i % 2) == 0) // even (0, 2, 4)
    {
      var p = a[count+1];
      var q = a[count];

      if (p == undefined) p = "";
      if (q) r.push(p + q+ "");

      count+=2;
    }
    else 
    {
      if (temp != undefined) r.push(temp + "");
      count+=1;
    }
  } // end loop


  r = r.reverse();

  results+= r + "\n";

} // end pair up