Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用JavaScript在每N个位置拆分一个字符串?_Javascript_String - Fatal编程技术网

用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));