如何截断并向超过特定字数的文本添加省略号?
How do I truncate and add ellipses to text that's longer than a specific number of words?
我想出了如何截断文本,但我只想在文本超过 10 个单词时添加省略号。如果文字少于10个字,我不想显示省略号。
我的代码按照我想要的方式截断了文本,但我不希望使用省略号来表示较短的文本。
我怎样才能做到这一点?
var shortText = jQuery.trim(title).split(" ").slice(0, 10).join(" ") + "...";
一种方法是根据总字数有条件地添加省略号。
自 split()
returns an array, you can test against the array's length property.
function truncateText(text) {
text = text.trim();
let words = text.split(" ");
return words.length > 10
? words.slice(0, 10).join(" ") + "..."
: text;
}
console.log(
truncateText("This is a sentence that is more than ten words long.")
);
console.log(
truncateText("This is a shorter sentence.")
);
顺便说一句,jQuery probably 不是必需的,因为 trim()
、split()
、join()
、slice()
和 length
都是标准的(普通)JavaScript.
使用Array.map
title.trim().split(" ")
.slice(0,11)
// function (e,i){ i<10? e : '...' }
.map( (e,i) => i < 10? e : '...' )
.join(' ')
map
函数将用省略号
替换第 11 个元素(如果存在)
副作用:这将加入带有 space
的省略号
我想出了如何截断文本,但我只想在文本超过 10 个单词时添加省略号。如果文字少于10个字,我不想显示省略号。
我的代码按照我想要的方式截断了文本,但我不希望使用省略号来表示较短的文本。
我怎样才能做到这一点?
var shortText = jQuery.trim(title).split(" ").slice(0, 10).join(" ") + "...";
一种方法是根据总字数有条件地添加省略号。
自 split()
returns an array, you can test against the array's length property.
function truncateText(text) {
text = text.trim();
let words = text.split(" ");
return words.length > 10
? words.slice(0, 10).join(" ") + "..."
: text;
}
console.log(
truncateText("This is a sentence that is more than ten words long.")
);
console.log(
truncateText("This is a shorter sentence.")
);
顺便说一句,jQuery probably 不是必需的,因为 trim()
、split()
、join()
、slice()
和 length
都是标准的(普通)JavaScript.
使用Array.map
title.trim().split(" ")
.slice(0,11)
// function (e,i){ i<10? e : '...' }
.map( (e,i) => i < 10? e : '...' )
.join(' ')
map
函数将用省略号
副作用:这将加入带有 space
的省略号