【发布时间】:2016-09-20 01:39:18
【问题描述】:
我有一个类似的字符串
var str = "aabbrdfc0912";
我想把它转换成一个数组,像两个一样
var arr = ["aa","bb","rd","fc","09","12"];
请提出建议。
【问题讨论】:
标签: javascript
我有一个类似的字符串
var str = "aabbrdfc0912";
我想把它转换成一个数组,像两个一样
var arr = ["aa","bb","rd","fc","09","12"];
请提出建议。
【问题讨论】:
标签: javascript
您可以使用match 函数和一个小的正则表达式来做到这一点:
var even_str = "aabbrdfc0912",
odd_str = "aabbrdfc0912X";
console.log( splitInPairs(even_str) );
console.log( splitInPairs(odd_str) );
function splitInPairs(str) {
return str.match(/..?/g);
}
【讨论】:
你可以使用正则表达式。
var str = "aabbrdfc0912",
array = str.match(/..|./g);
console.log(array);
【讨论】:
String.match(rg) 会让你这样做:
console.log("aabbrdfc0912".match(/\w\w/g))
【讨论】:
For-loop增加2可能会有所帮助。
var str = "aabbrdfc09123";;
var op = [];
for (var i = 0; i < str.length; i += 2) {
op.push(str[i] + (str[i + 1] || ''));
}
console.log(op);
【讨论】:
var arr = str.match(/.{1,2}/g);
会给你结果
["aa","bb","rd","fc","09","12"];
【讨论】:
使用String.split、Array.slice 和Array.forEach 函数的另一种解决方案:
var str = "aabbrdfc0912", result = [];
str.split('').forEach(function(v, k, arr){
if (k % 2 !== 0) this.push(arr.slice(k-1, k+1).join(''));
}, result);
console.log(result); // ["aa", "bb", "rd", "fc", "09", "12"]
还有一种使用 String.split 和 Array.filter 方法的方法:
result = str.split(/(\w{2})/).filter(Boolean);
console.log(result); // ["aa", "bb", "rd", "fc", "09", "12"]
【讨论】:
其中一个可能的正则表达式可能是/[\w]{2}/g
var str = "aabbrdfc0912", splited_arr;
splitted_arr = str.match(/[\w]{2}/g);
console.log(splitted_arr);
【讨论】:
嗯,这也可以代替正则表达式,
var str = "aabbrdfc0912";
var result = [];
var piece = 2;
while (str.length) {
result.push(str.slice(0, piece));
str = str.substr(piece);
}
console.log(result);
// result = ["aa","bb","rd","fc","09","12"];
【讨论】: