Ответ 1
Вы можете использовать split
[MDN] и join
[MDN].
"Want better search results? See our search tips".split(" ").splice(0,3).join(" ")
Как укорачивать предложение до определенного количества слов (NB, а не буквы)?
Я думал использовать split(" ")
, но как же мне подсчитать слова?
Например:
Javascript word count cut off
= > Javascript word count
Want better search results? See our search tips!
= > Want better search
Вы можете использовать split
[MDN] и join
[MDN].
"Want better search results? See our search tips".split(" ").splice(0,3).join(" ")
Вот функция "читать дальше", которую я написал для своего приложения Meteor. Он принимает параметр maxWords и удаляет HTML-теги с помощью метода jquery text().
Надеюсь, поможет!
function readMore(string, maxWords) {
var strippedString = $("<p>" + string + "</p>").text().trim();
var array = strippedString.split(" ");
var wordCount = array.length;
var string = array.splice(0, maxWords).join(" ");
if(wordCount > maxWords) {
string += "...";
}
return string ;
}
Чистое решение с ES6, по умолчанию 10 слов
const truncate = (str, max = 10) => {
const array = str.trim().split(' ');
const ellipsis = array.length > max ? '...' : '';
return array.slice(0, max).join(' ') + ellipsis;
};
Разделение работает, как вы описали. Однако, если вы используете RegExp, вам не нужно разбить всю строку:
var str = "Lions and tigers and bears";
var exp = /[A-Z|a-z]+/g;
var a = exp.exec(str); // Lions
var b = exp.exec(str); // and
var c = exp.exec(str); // tigers