根据数组的长度将字符串拆分为单词

时间:2017-03-20 02:37:56

标签: javascript

我有一些文字。

text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do 
       eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim 
       ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut 
       aliquip ex ea commodo consequat.'

我怎么能根据另一个数组的长度拆分它。

array = 'sed do'

我试过了:

alength = array.split(" ").length;
array2 = candidate.match('\/((?:(?:\\S+\\s){'+alength+'})|(?:.+)(?=\\n|$))\/g');

返回null。

我希望得到的是:

array 2 = 'Lorem ipsum','dolor sit',...'commodo consequat'

我可以使用另一种String方法吗?

1 个答案:

答案 0 :(得分:1)

我喜欢使用正则表达式,但是一旦你开始动态地构建正则表达式,事情就会开始变得混乱,因此我考虑采用另一种方法。例如,您可以将原始字符串拆分为单个单词,然后根据需要对其进行分组。易于理解和维护:



function getPhrases(text, wordsPerPhrase) {
  var words = text.split(/\s+/)
  var result = []
  for (var i = 0; i < words.length; i += wordsPerPhrase) {
    result.push(words.slice(i, i + wordsPerPhrase).join(" "))
  }
  return result
}

text = `Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do 
       eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim 
       ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut 
       aliquip ex ea commodo consequat.`
       
console.log(getPhrases(text, 9))
console.log(getPhrases(text, 5))
console.log(getPhrases(text, 2))
&#13;
&#13;
&#13;

注意:如果您不想在输出中使用标点符号,则可以添加类似这样的内容作为函数的第一行:

text = text.replace(/[^a-z'\s]/gi,'')