是否可以分割字符串(可能使用正则表达式),以便每个其他数字都是一对(从右端开始)?
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位数字。
答案 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