正如标题所说,我正在尝试将字符串截断为前n个单词。
var text = $("#textarea-id").val();
var truncated = text.split(/(?=\s)/gi).slice(0, n).join('');
这让我得到了我想要的东西,但问题是如果一行中有两个空白字符,那么它会将一个空白字符作为自己的单词。如何在不改变字符串的情况下防止这种情况(除了截断)?
我尝试在正则表达式中的+
之后使用\s
量词,但是没有做任何事情。
答案 0 :(得分:6)
在拆分之前,只需用一个空格替换多个空格。
var truncated = text.replace(/\s+/g," ").split(/(?=\s)/gi).slice(0, n).join('');
答案 1 :(得分:4)
首先用一个空格替换冗余空格:
var text = $("#textarea-id").val();
var truncated = text.replace(/\s+/g," ").split(/(?=\s)/gi).slice(0, n).join('');
答案 2 :(得分:0)
此代码截断文本以保留前n个单词,同时保持文本的其余部分不变。
例如,您希望限制用户输入/粘贴过多的文字;你不想改变他们所写的除截断之外的东西。
var words = text.split(/(?=\s)/gi);
var indexToStop = words.length;
var count = 0;
for (var i = 0; i < words.length && count <= n; i++) {
if (words[i].trim() != "") {
if (++count > n)
indexToStop = i;
}
}
var truncated = words.slice(0, indexToStop).join('');