Javascript substr(); 按字数限制而不是字符

我想用字而不是字符来限制子字符串。 我正在思考正则表达式和空格但不知道如何将它拉下来。

场景:使用javascript / jQuery将一段单词限制为200个单词。

var $postBody = $postBody.substr(' ',200); 

这很棒,但将文字分成两半:)提前谢谢!

 function trim_words(theString, numWords) { expString = theString.split(/\s+/,numWords); theNewString=expString.join(" "); return theNewString; } 

如果你对一个不太准确的解决方案感到满意,你可以简单地保持文本中空格字符数的运行计数,并假设它等于单词的数量。

否则,我会在字符串上使用split()并使用“”作为分隔符,然后计算拆分返回的数组的大小。

非常快速和肮脏

 $("#textArea").val().split(/\s/).length 

我想你需要考虑标点符号和其他非单词,非空格字符。 你想要200个单词,不包括空格和非字母字符。

 var word_count = 0; var in_word = false; for (var x=0; x < text.length; x++) { if ( ... text[x] is a letter) { if (!in_word) word_count++; in_word = true; } else { in_word = false; } if (!in_word && word_count >= 200) ... cut the string at "x" position } 

您还应该决定是否将数字视为单词,以及将单个字母视为单词。