用JavaScript在每N个位置拆分一个字符串?
我有以下字符串:用JavaScript在每N个位置拆分一个字符串?,javascript,string,Javascript,String,我有以下字符串: foofaafoofaafoofaafoofaafoofaa 一个有10行的数组(如果我按每3个字符分割一次),如果我要实例化它,它看起来像这样: var fooarray = new Array ('foo', 'faa', 'foo', 'faa', 'foo', 'faa', 'foo', 'faa', 'foo', 'faa'); 因此,我需要一个内置或定制的函数,它可以帮助我按每N个字符分割字符串。尝试以下代码: var foo=“foofaa”; log(fo
foofaafoofaafoofaafoofaafoofaa
一个有10行的数组(如果我按每3个字符分割一次),如果我要实例化它,它看起来像这样:
var fooarray = new Array ('foo', 'faa', 'foo', 'faa', 'foo', 'faa', 'foo', 'faa', 'foo', 'faa');
因此,我需要一个内置或定制的函数,它可以帮助我按每N个字符分割字符串。尝试以下代码:
var foo=“foofaa”;
log(foo.match(/.{1,3}/g))代码>在我写这篇文章时,@xdazz想出了一个非常简单的正则表达式解决方案
正如您要求(从对该答案的评论中)使用非正则表达式解决方案一样,我将提交此解决方案
function splitNChars(txt, num) {
var result = [];
for (var i = 0; i < txt.length; i += num) {
result.push(txt.substr(i, num));
}
return result;
}
splitNChars("foofaafoofaafoofaafoofaafoofaa",3);
函数splitNChars(txt,num){
var结果=[];
对于(变量i=0;i
var s=“foofaa”;
var a=[];
var i=3;
do{a.push(s.substring(0,i))}
而((s=s.substring(i,s.length))!=“”);
console.log(a)
您可以这样做:
var input = "foofaafoofaafoofaafoofaafoofaa";
var result = [];
while (input.length) {
result.push(input.substr(0, 3));
input = input.substr(3);
}
演示:正如马克·沃尔特所指出的,该解决方案可以完美地工作:
function splitStringAtInterval (string, interval) {
var result = [];
for (var i=0; i<string.length; i+=interval)
result.push(string.substring (i, i+interval));
return result;
}
函数splitStringAtInterval(字符串,间隔){
var结果=[];
对于(var i=0;i函数,后面是使用它的示例。示例测试输出:[“abc”、“def”、“ghi”、“j”]
函数splitEvery(str,n)
{
var-arr=新数组;
对于(变量i=0;i
这里有一个答案是这样的()@xdazz,但OP每N个位置说一次;您的正则表达式固定在3。将其概括为向上投票。:)你能用正则表达式从右到左拆分它吗?@vsync:我不知道在一般情况下这是否可行,但也许你可以反转输入字符串,进行匹配,然后反转输出?太棒了,我的朋友,这是一个非常好的正则表达式用法,数组不能成为一个好的变量名。即使Javascript是case sensit我想这可能会让人困惑。
function splitEvery(str, n)
{
var arr = new Array;
for (var i = 0; i < str.length; i += n)
{
arr.push(str.substr(i, n));
}
return arr;
}
var result = splitEvery('abcdefghij', 3);
document.write(JSON.stringify(result));