我想用JavaScript截断一个动态加载的字符串。这是一个url,所以没有空格,我显然不关心单词的边界,只关心字符。
以下是我得到的答案:
var pathname = document.referrer; //wont work if accessing file:// paths
document.getElementById("foo").innerHTML = "<a href='" + pathname +"'>" + pathname +"</a>"
我想用JavaScript截断一个动态加载的字符串。这是一个url,所以没有空格,我显然不关心单词的边界,只关心字符。
以下是我得到的答案:
var pathname = document.referrer; //wont work if accessing file:// paths
document.getElementById("foo").innerHTML = "<a href='" + pathname +"'>" + pathname +"</a>"
当前回答
如果您想通过Limit(符号)截断, 但对于不长的文本(例如标题),你不想删减单词(保留最后一个单词完整):
trancWord(str, limit) {
str = str.split(' ');
let summ = 0
for (let [index, value] of str.entries()) {
summ += value.length
if (summ > limit) {
let cutTolimit = str.slice(0, index);
return str.slice(0, index).join(' ') + ' ' + '...';
}
}
return str.join(' ');
}
对于长字符串(一些长文本后Vue-3使用过滤器):
trancWord (str, max){
if (str.length <= max) { return str; }
let subString = str.substr(0, max);
return (str ? subString.substr(0, subString.lastIndexOf(' ')) : subString) + '...';
}
其他回答
这里有一个你可以使用的方法。这是FreeCodeCamp挑战之一的答案:
function truncateString(str, num) {
if (str.length > num) {
return str.slice(0, num) + "...";
} else {
return str;
}
}
逻辑如下
得到字符串的长度 如果大于阈值,则获取 子字符串并以省略号或其他符号结束 否则,返回输入字符串 函数truncateString(str: string, num: number, end: string = '…'){ 返回str.length > num ?str.slice(0, num) + end: str; }
要将字符串截断为特定长度,请在JavaScript中使用以下单线性箭头函数:
const truncate = (str, len) => str.slice?.(0, len);
console.log(truncate("Hello, World!", 5));
// Expected Output: Hello
上面的函数使用string .prototype.slice方法,该方法获取字符串的一个块,并将其作为一个新字符串返回,而不改变原始字符串。
以防你想按单词截断。
function limit(str, limit, end) { limit = (limit)? limit : 100; end = (end)? end : '...'; str = str.split(' '); if (str.length > limit) { var cutTolimit = str.slice(0, limit); return cutTolimit.join(' ') + ' ' + end; } return str.join(' '); } var limit = limit('ILorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus metus magna, maximus a dictum et, hendrerit ac ligula. Vestibulum massa sapien, venenatis et massa vel, commodo elementum turpis. Nullam cursus, enim in semper luctus, odio turpis dictum lectus', 20); console.log(limit);
除了子字符串方法,我找到了一个不错的小JS库用于此目的。
它在普通javascript中有多种有用的方法来截断字符串。
按字符截断:
Var pathname = 'this/is/thepathname'; . getelementbyid(“foo”)。innerHTML = " <类=链接的href = '“+路径名+”>“+路径名+”< / >” //调用插件-字符截断只需要一行init 新Cuttr(”。链接',{长度:10}); < script src = " https://cdnjs.cloudflare.com/ajax/libs/cuttr/1.3.2/cuttr.min.js " > < /脚本> < div id = " foo " > < / div >
简单地添加一个类到a和初始化插件。
多行文本剪辑也是可能的。 在github页面上的cutter .js文档中提到了更多的选项,如词序句子截断。