Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.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 将长文本拆分为字符串数组_Javascript - Fatal编程技术网

Javascript 将长文本拆分为字符串数组

Javascript 将长文本拆分为字符串数组,javascript,Javascript,我需要一个方法将一个字符串拆分为一个较小的字符串数组,并按字数进行拆分。是的,我正在寻找这样的函数: function cut(long_string, number_of_words) { ... } var str = "word1 word2 word3 word4 word5 word6 word7 word8 word9 word10 word11 word12"; var arr = cut(str, 3); 在这种情况下,cut应该返回4个数组,每个数组有3个字。我试图为Str

我需要一个方法将一个字符串拆分为一个较小的字符串数组,并按字数进行拆分。是的,我正在寻找这样的函数:

function cut(long_string, number_of_words) { ... }

var str = "word1 word2 word3 word4 word5 word6 word7 word8 word9 word10 word11 word12";
var arr = cut(str, 3);

在这种情况下,cut应该返回4个数组,每个数组有3个字。我试图为String.match或String.split找到一个正则表达式,但我不知道怎么做。

首先将其按空格拆分,然后将数组分块

function cut(input,words) {
    input = input.split(" ");
    var l = input.length, i, ret = [];
    for( i=0; i<l; i+=words) {
        ret.push(input.splice(0,words));
    }
    return ret;
}

首先按空格分割,然后将数组分块

function cut(input,words) {
    input = input.split(" ");
    var l = input.length, i, ret = [];
    for( i=0; i<l; i+=words) {
        ret.push(input.splice(0,words));
    }
    return ret;
}

生成一个将数组拆分为块的函数:

chunk = function(ary, len) {
    var i = 0, res = [];
    for (var i = 0; i < ary.length; i += len)
        res.push(ary.slice(i, i + len));
    return res;
}
str.match/\w+/g也可以是str.split/\s+/,具体取决于处理非单词字符的方式

如果您只想创建一个子字符串数组,而不想像问题所说的那样创建一个单词数组,那么这里有一个解决方案,它不会在子字符串中留下尾随空格:

str.match(new RegExp("(\\S+\\s+){1," + (num - 1) + "}\\S+", "g"))
返回

["word1 word2 word3", "word4 word5 word6", "word7 word8 word9", "word10 word11 word12"]

生成一个将数组拆分为块的函数:

chunk = function(ary, len) {
    var i = 0, res = [];
    for (var i = 0; i < ary.length; i += len)
        res.push(ary.slice(i, i + len));
    return res;
}
str.match/\w+/g也可以是str.split/\s+/,具体取决于处理非单词字符的方式

如果您只想创建一个子字符串数组,而不想像问题所说的那样创建一个单词数组,那么这里有一个解决方案,它不会在子字符串中留下尾随空格:

str.match(new RegExp("(\\S+\\s+){1," + (num - 1) + "}\\S+", "g"))
返回

["word1 word2 word3", "word4 word5 word6", "word7 word8 word9", "word10 word11 word12"]

让我们做些疯狂的事:

function cut(str, num){
    return str.match(new RegExp("(?:(?:^|\\s)\\S+){1," + num + "}", "g"));
}

这将在每次运行时创建一个新的RegExp,并与字符串匹配。就速度而言,可能有更好的解决方案,但这是一个很棒的疯狂科学TM。而且很短。

让我们做些疯狂的事情:

function cut(str, num){
    return str.match(new RegExp("(?:(?:^|\\s)\\S+){1," + num + "}", "g"));
}

这将在每次运行时创建一个新的RegExp,并与字符串匹配。就速度而言,可能有更好的解决方案,但这是一个很棒的疯狂科学TM。而且它很短。

尝试对字符串使用split函数。您可以使用空格作为分隔符将字符串拆分为单词,然后使用单词数创建一个数组,以确定字符串的长度尝试使用拆分函数。您可以使用空格作为分隔符将字符串拆分为单词,然后使用单词数创建一个数组,以确定长度这将在子字符串中留下尾随空格。看看我的答案,我已经在Chrome和Firefox的最新版本中用几个字符串进行了测试,效果非常好@thg435@Ivan:结果子字符串包含额外的前导空格而不是尾随,我的错误。cuta b c d,2->[a b,c d]这会在子字符串中留下尾随空格。看看我的答案,我已经在Chrome和Firefox的最新版本中用几个字符串进行了测试,效果非常好@thg435@Ivan:结果子字符串包含额外的前导空格而不是尾随,我的错误。cuta b c d,2->[a b,c d]