我正在努力完成以下任务:
如果字符串(第一个参数)长于给定的最大字符串长度(第二个参数),则截断该字符串。返回带有...结尾的截断字符串。
请注意,将三个点插入末尾会增加字符串长度。
但是,如果给定的最大字符串长度num小于或等于3,则在确定截断的字符串时,添加三个点不会增加字符串长度。
我的代码只有在我的num> 2时才会通过测试,否则会失败。
function truncateString(str, num) {
// Clear out that junk in your trunk
var trunString = "";
if (str.length > num) {
trunString = str.slice(0, (num -3)) + "...";
return trunString;
}
return str;
}
truncateString("A-", 1);
为此找到了解决方案:
var trunString = "";
if (str.length > num && num >= 4 ) {
trunString = str.slice(0, (num - 3)) + "...";
return trunString;
}
else if (str.length > num && num <= 3) {
trunString = str.slice(0, (num)) + "...";
return trunString;
}
答案 0 :(得分:2)
您可以使用conditional (ternary) operator ?:
function truncateString(str, num) {
return str.length > num ?
str.slice(0, num > 3 ? num - 3 : num) + "..." :
str;
}
console.log(truncateString("Abcdefghijk", 5));
console.log(truncateString("A-", 1));
console.log(truncateString("Alpha", 5));
console.log(truncateString("Beta", 5));
console.log(truncateString("Epsilon", 3));
答案 1 :(得分:0)
function truncateString(str, num) {
// clear out that junk in your trunk
var trunString = '';
if (str.length && str.length > num) {
trunString = str.slice(0, num - 1) + '…';
return trunString;
}
return str;
}
truncateString("A-", 1);
P.S。:同时阅读@techfoobar评论,使用&hellip
HTML实体将有所帮助......
答案 2 :(得分:-1)
这是我的解决方案,希望能帮到你
function truncate(str, num) {
// Clear out that junk in your trunk
var newStr;
if(num>3&&num<str.length){
newStr=str.slice(0,num-3)+"...";
}else if(num>=str.length){
newStr=str;
}else{
newStr=str.slice(0,num)+"...";
}
return newStr;
}
truncate("A-tisket a-tasket A green and yellow basket", "A-tisket a-tasket A green and yellow basket".length);