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]