将字符串拆分为具有交替一位和两位数字的数组
Split string into array with alternate one & two digits
是否可以拆分一个字符串(可能带有正则表达式(,以便每隔一个数字都是一对(从右端开始(?
// 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]
我尝试反转字符串,然后添加交替的两个和一个字符块,直到字符串的末尾(前面(。然后再次反转。这主要有效,但它有缺陷(并非适用于所有情况(。我也尝试了正则表达式
('d'd)('d)('d'd)('d)('d'd)('d)
但这也不起作用(具有讽刺意味的是,仅在正则表达式测试器中( - 它太长了,但我需要它最多适用于 10 位数字。
没那么难:
从右边开始,我将取一次 2 位数字,第二次取 1 位数字。使用 slice
.然后我将使用 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"]
我最终到达了那里。
// 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
相关文章:
- 将数字四舍五入到小数点后两位
- 将数字四舍五入到小数点后两位,以设置货币格式
- 将数字四舍五入到两位小数
- 将数字格式化为货币,两位小数
- 用于输入文本字段的Javascript验证器,仅用于两位小数
- JS Regex的最后两位数字与前两位数字匹配
- 始终至少显示两位小数
- 用Javascript显示价格,小数点后两位
- 小数点后两位四舍五入-找不到正确的公式
- 在 javascript 中货币的两位/三位后面添加逗号
- 对两个数组进行排序在两位数字上失败
- 从谷歌 v3 API 响应中检索前两位数字
- 在数值结果中仅显示两位小数
- 使用带有 .NET MVC 的 Javascript 将十进制数格式化为两位
- 将 JavaScript 数字转换为小数点后两位
- JavaScript 整数到前两位数字
- 将数字舍入到小数点后两位,并删除任何其他小数点
- 将字符串拆分为具有交替一位和两位数字的数组
- 在谷歌图表中以小数点后两位显示数字
- 将解析输入值输出为两位小数