2010-02-18 168 views
4

我正在使用my_colors.split(“”)方法,但我想分裂或分割字符串的固定数字,例如每个分裂发生在10个字左右......如何在JavaScript中做到这一点?字符串分裂在JavaScript?

回答

7

试试这个 - 这个正则表达式捕获的十个字(或更少,最后的话)组:

var groups = s.match(/(\S+\s*){1,10}/g); 
+0

神圣烟!我感到很尴尬,你的答案比我的多得多!谢谢,如果你不接受这个答案,我会踢一只小狗。 – jessegavin 2010-02-18 07:21:06

+0

我也很喜欢这个...非常... plz不踢一只小狗... – Sheery 2010-02-19 05:46:54

+2

@sheery如果你喜欢这个答案,为什么你不接受它?您应该始终接受您认为最有帮助的答案,以便下一个遇到同样问题的人知道提问者提出的解决方案“最好”或至少被认为是最好的。 – 2010-02-19 14:15:30

2

您可以一次拆分(“”)然后连接(“”)结果数组10个元素。

0

你可以尝试像

console.log("word1 word2 word3 word4 word5 word6" 
       .replace(/((?:[^ ]+\s+){2})/g, '$1{special sequence}') 
       .split(/\s*{special sequence}\s*/)); 
//prints ["word1 word2", "word3 word4", "word5 word6"] 

但是您做的更好或者split(" "),然后join(" ")或写一个简单的标记生成器自己将在你喜欢的任何方式拆分此字符串。

3

您可能会使用像/\S+/g这样的正则表达式来拆分字符串,以防单词被多个空格或任何其他空格分隔。

我不确定我的下面的例子是最优雅的方式去它,但它的工作原理。

<html> 
<head> 
<script type="text/javascript"> 
    var str = "one two three four five six seven eight nine ten " 
         + "eleven twelve thirteen fourteen fifteen sixteen " 
         + "seventeen eighteen nineteen twenty twenty-one"; 

    var words = str.match(/\S+/g); 
    var arr = []; 
    var temp = []; 

    for(var i=0;i<words.length;i++) { 
     temp.push(words[i]); 
     if (i % 10 == 9) { 
      arr.push(temp.join(" ")); 
      temp = []; 
     } 
    } 

    if (temp.length) { 
     arr.push(temp.join(" ")); 
    } 

    // Now you have an array of strings with 10 words (max) in them 
    alert(" - "+ arr.join("\n - ")); 
</script> 
</head> 
<body> 
</body> 
</html> 
+1

切片可以在这里派上用场:http://www.w3schools.com/ jsref/jsref_slice_array.asp – Kobi 2010-02-18 07:08:15

+0

切片上的良好通话。但是,我将不得不打印出我的答案,以便我可以刻录它。你的情况好多了。 – jessegavin 2010-02-18 07:22:22

+0

感谢“jessegavin”,它完全符合我的要求,非常感谢。 – Sheery 2010-02-19 05:40:27