从后面将字符串拆分为数组
Split a string into array from back
我有一个字符串。
var string = "31415926535897932384626433832795028841971693993751058209749445923078164";
我想从后面拆分成长度为10的数组
我有:
function split(a) {
return a.split( /(?=(?:..........)*$)/ ).map(function(x){return parseInt(x)});
}
这给了我想要的输出:
[3, 1415926535, 8979323846, 2643383279, 5028841971, 6939937510, 5820974944, 5923078164]
问题:
如何使上述函数动态化以便将字符串拆分为 n 个字符? (目前我是adding/removing点)
拆分时如何跳过第一个字符? (我希望第一个元素始终为 3,因此第二个元素的长度可以为 1 到 n)?
只需在花括号内指定要为每个项目获取的位数。请注意,您不能将变量传递给使用 /
作为分隔符的正则表达式。您必须使用 RegExp
构造函数在正则表达式中传递变量。
var string = "31415926535897932384626433832795028841971693993751058209749445923078164";
function split(a,n) {
return a.split( new RegExp("(?=(?:.{" + n + "})*$)" )).map(function(x){return parseInt(x)});
}
alert(split(string, 10))
或
您可以简单地使用匹配而不是拆分。
string.match(/(?!^.).{11}/gm)
var string = "31415926535897932384626433832795028841971693993751058209749445923078164";
function split(a,n) {
return a.match(new RegExp("(?!^.).{" + n + "}|^.", "gm")).map(function(x){return parseInt(x)});
}
alert(split(string, 11))
如果你还想匹配剩余的字符,即字符出现在开头,不匹配的字符出现在最后,你可以使用这个正则表达式。
/(?!^.).{11}|^.|.+/gm
简单的方法..不使用 RegExp
var string="31415926535897932384626433832795028841971693993751058209749445923078164";
var arr = new Array();
而 (!string.length < 10) {
substr = string.substr(strlen(string)-10);
字符串 = string.replace(substr, '');
arr.push(substr);
}
var result_arr = arr.reverse();
请检查这个
var _mySplit = function(str, splitLength) {
var _regEx = '';
var startSubStringLength = str.length % splitLength
if(startSubStringLength > 0) {
_regEx = new RegExp("(^.{1," + startSubStringLength + "})|(.{1," + splitLength + "})|(.{1,})", "g")
}
return str.match(_regEx)
}
我有一个字符串。
var string = "31415926535897932384626433832795028841971693993751058209749445923078164";
我想从后面拆分成长度为10的数组
我有:
function split(a) {
return a.split( /(?=(?:..........)*$)/ ).map(function(x){return parseInt(x)});
}
这给了我想要的输出:
[3, 1415926535, 8979323846, 2643383279, 5028841971, 6939937510, 5820974944, 5923078164]
问题:
如何使上述函数动态化以便将字符串拆分为 n 个字符? (目前我是adding/removing点)
拆分时如何跳过第一个字符? (我希望第一个元素始终为 3,因此第二个元素的长度可以为 1 到 n)?
只需在花括号内指定要为每个项目获取的位数。请注意,您不能将变量传递给使用 /
作为分隔符的正则表达式。您必须使用 RegExp
构造函数在正则表达式中传递变量。
var string = "31415926535897932384626433832795028841971693993751058209749445923078164";
function split(a,n) {
return a.split( new RegExp("(?=(?:.{" + n + "})*$)" )).map(function(x){return parseInt(x)});
}
alert(split(string, 10))
或
您可以简单地使用匹配而不是拆分。
string.match(/(?!^.).{11}/gm)
var string = "31415926535897932384626433832795028841971693993751058209749445923078164";
function split(a,n) {
return a.match(new RegExp("(?!^.).{" + n + "}|^.", "gm")).map(function(x){return parseInt(x)});
}
alert(split(string, 11))
如果你还想匹配剩余的字符,即字符出现在开头,不匹配的字符出现在最后,你可以使用这个正则表达式。
/(?!^.).{11}|^.|.+/gm
简单的方法..不使用 RegExp var string="31415926535897932384626433832795028841971693993751058209749445923078164"; var arr = new Array(); 而 (!string.length < 10) { substr = string.substr(strlen(string)-10); 字符串 = string.replace(substr, ''); arr.push(substr); } var result_arr = arr.reverse();
请检查这个
var _mySplit = function(str, splitLength) {
var _regEx = '';
var startSubStringLength = str.length % splitLength
if(startSubStringLength > 0) {
_regEx = new RegExp("(^.{1," + startSubStringLength + "})|(.{1," + splitLength + "})|(.{1,})", "g")
}
return str.match(_regEx)
}