我有一个字符串值("11112233"
)。我想拆分这个字符串并将其分成3个不同的值。
Val 1 = 1111
val 2 = 22
val 3 = 33
我搜索了很多,可能使用(/
)或其他符号等字符。
还有别的,我的号码总是不同的,所以我不能通过输入确切的字符串来拆分它。
我想做这样的事情:
var myVal = "11112233";
var lastVal = myVal.split(0 , 3); // split from index 0 till index 3
我怎么做? 感谢
答案 0 :(得分:14)
试试这个正则表达式:
'121112233'.match(/(\d)\1*/g) // ["1", "2", "111", "22", "33"]
\1*
表示“与之前的匹配相同,零次或多次”。
答案 1 :(得分:4)
试试这个
myVal='11112233'
myVal.match(/(\d)\1+/g); //["1111", "22", "33"]
答案 2 :(得分:3)
您可以使用object来解决此问题。
var str = '11112233';
var strObj = {};
for(var i = 0; i < str.length; i++){
if(strObj[str[i]]) {
strObj[str[i]]+=str[i];
} else {
strObj[str[i]] = str[i];
}
}
for (var key in strObj) {
if (strObj.hasOwnProperty(key)) {
alert(key + " -> " + strObj[key]);
}
}
答案 3 :(得分:2)
答案 4 :(得分:2)
为了补充上述答案,这里的解决方案不使用正则表达式。
function partition(acc, value){
var last = acc[acc.length-1];
if(last && last[0] == value) acc[acc.length-1] += value;
else acc = acc.concat(value);
return acc;
}
var toInt = parseInt.bind(null, 10)
var x = ([[]]).concat("112233".split(''))
.reduce(partition).map(toInt);
// [11, 22, 33]