如何在javascript中的一定数量的字符后在空格中拆分字符串?

所以我有一个很好的长字符串,我需要在一定数量的字符后在空格中分割Javascript。 例如,如果我有

“你是一只狗,我是一只猫。”

我希望它在10个字符后分割,但是在下一个空格…所以不要将狗分开,而是希望下一个空格成为分裂点。

我希望我写得清楚,解释起来有点尴尬。

编辑:我需要将所有这些存储到一个数组中。 所以按照我的描述将字符串拆分,但将其存储到我可以迭代的数组中。 对不起有点困惑 – 就像我说的那样,有点奇怪的描述。

考虑:

str = "How razorback-jumping frogs can level six piqued gymnasts!" result = str.replace(/.{10}\S*\s+/g, "$&@").split(/\s+@/) 

结果:

 [ "How razorback-jumping", "frogs can level", "six piqued", "gymnasts!" ] 

.indexOf有一个from参数。

 str.indexOf(" ", 10); 

您可以分别获取拆分前后的字符串:

 str.substring(0, str.indexOf(" ", 10)); str.substring(str.indexOf(" ", 10)); 

这就是你追求的吗? http://jsfiddle.net/alexflav23/j4kwL/

 var s = "You is a dog and I am a cat."; s = s.substring(10, s.length); // Cut out the first 10 characters. s = s.substring(s.indexOf(" ") + 1, s.length); // look for the first space and return the // remaining string starting with the index of the space. alert(s); 

要将其包装起来,如果找不到您要查找的字符串, String.prototype.indexOf将返回-1 。 为确保不会出现错误结果,请在最后一部分之前检查。 此外,空格的索引可能是string.length - 1 (字符串中的最后一个字符是空格),在这种情况下, s.index(" ") + 1将不会提供您想要的内容。

这应该做你想要的,没有正则表达式

 var string = "You is a dog and I am a cat.", length = string.length, step = 10, array = [], i = 0, j; while (i < length) { j = string.indexOf(" ", i + step); if (j === -1) { j = length; } array.push(string.slice(i, j)); i = j; } console.log(array); 

在jsfiddle

这里有一个jsperf比较这个答案和你选择的正则表达式答案。

附加:如果要修剪每个文本块的空格,则更改代码

 array.push(string.slice(i, j).trim()); 

这是一个适用于某种变化的正则表达式解决方案:

 var result = []; str.replace(/(.{10}\w+)\s(.+)/, function(_,a,b) { result.push(a,b); }); console.log(result); //=> ["You is a dog", "and I am a cat."] 
 function breakAroundSpace(str) { var parts = []; for (var match; match = str.match(/^[\s\S]{1,10}\S*/);) { var prefix = match[0]; parts.push(prefix); // Strip leading space. str = str.substring(prefix.length).replace(/^\s+/, ''); } if (str) { parts.push(str); } return parts; } var str = "You is a dog and I am a cat and she is a giraffe in disguise."; alert(JSON.stringify(breakAroundSpace(str))); 

产生

 ["You is a dog", "and I am a", "cat and she", "is a giraffe", "in disguise."]