不使用jquery,最简单的方法是什么?如果我有一个包含600个单词的字符串,并且我只想要前100个左右的单词然后跟踪:...
最简单的方法是什么?
我找到了:replace(/(([^\s]+\s\s*){40})(.*)/,"$1…");
但是我没有'了解正则表达式足以知道这是否正确。
答案 0 :(得分:3)
@ dfsq的解决方案是一个很好的直接解决方案,但为了学习:)
为了尝试和理解正则表达式,我建议查看 Debuggex 为您提供的类似流程图的可视化,并尝试在 Regex101上进行替换即可。 (链接包含您的问题中未加改变的正则表达式)
我会做一些小修改:
.
与新行不匹配,一种方法是匹配[\s\S]
,绝对匹配每个字符[^\s]+\s\s*
可以解开并优化为\S+\s+
,但我会将其转为\s*\S+
,以便...
位于最后一个单词之后介于两者之间的空间。哪会导致这个:
((\s*\S+){40})([\s\S]*)
答案 1 :(得分:0)
我猜这很简单(我不知道这是不是最好的方式)!
for(var i=1;i <= numberOfWords;i++) {
var word = mystr.substr(0,mystr.indexOf(' ')+1).trim();
arrayOfWords.push(word);
mystr = mystr.substr(mystr.indexOf(' '),mystr.length-1).trim();
}