javascript用语言打破句子

什么是一个很好的策略,可以将完整的单词放入具有后续特征的数组中。

例。 这是一个惊人的句子。

Array( [0] => This [1] => is [2] => an [3] => amazing [4] => sentence. ) 

元素0-3将具有后续空格,因为句点接替第4个元素。

我在单词中的想法是说..嘿,我需要你通过间距字符来分割这些,然后一旦注入的数组元素的元素宽度达到X,就打破一个新的行。

拜托,gawd不要提供大量的代码。 我更愿意写自己的,只要告诉我你会怎么做。

只需使用split

 var str = "This is an amazing sentence."; var words = str.split(" "); console.log(words); //["This", "is", "an", "amazing", "sentence."] 

如果你需要一个空间,你为什么不这样做呢? (之后使用循环)

 var str = "This is an amazing sentence."; var words = str.split(" "); for (var i = 0; i < words.length - 1; i++) { words[i] += " "; } console.log(words); //["This ", "is ", "an ", "amazing ", "sentence."] 

哦,睡个好觉!

与Ravi的答案类似,使用match ,但在正则表达式中使用单词boundary \b来分割单词边界:

 'This is a test. This is only a test.'.match(/\b(\w+)\b/g) 

产量

 ["This", "is", "a", "test", "This", "is", "only", "a", "test"] 

要么

 'This is a test. This is only a test.'.match(/\b(\w+\W+)/g) 

产量

 ["This ", "is ", "a ", "test. ", "This ", "is ", "only ", "a ", "test."] 

试试这个

 var words = str.replace(/([ .,;]+)/g,'$1§sep§').split('§sep§'); 

这将

  1. 在每个选定的分隔符[ .,;]+之后插入标记§sep§
  2. 将字符串拆分到标记的位置,从而保留实际的分隔符。

如果你需要空格和点最简单的那样。

 "This is an amazing sentence.".match(/.*?[\.\s]+?/g); 

结果将是数组(这是一个惊人的句子。)

如果您想要包含空格并在O(N)中完成,这是一个选项

 var str = "This is an amazing sentence."; var words = []; var buf = ""; for(var i = 0; i < str.length; i++) { buf += str[i]; if(str[i] == " ") { words.push(buf); buf = ""; } } if(buf.length > 0) { words.push(buf); }