我想用JavaScript截断一个动态加载的字符串。这是一个url,所以没有空格,我显然不关心单词的边界,只关心字符。

以下是我得到的答案:

var pathname = document.referrer; //wont work if accessing file:// paths
document.getElementById("foo").innerHTML = "<a href='" + pathname +"'>" + pathname +"</a>"

当前回答

var pa = document.getElementsByTagName('p')[0].innerHTML; var rpa = document.getElementsByTagName('p')[0]; / / console.log (pa。片(0,30)); var newPa = pa。片(0,29).concat(“…”); 战。textContent = newPa; console.log (newPa) < p > 一些文本这里一些文本一些文本这里一些文本一些文本这里一些文本一些文本这里一些文本一些文本这里一些文本一些文本这里一些文本一些文本这里一些文本一些文本 < / p >

其他回答

我觉得应该提一下Sugar.js。它有一个截断方法,非常聪明。

从文档中可以看到:

截断字符串。除非split为true, truncate不会将单词拆分,而是 丢弃发生截断的单词。

例子:

'just sittin on the dock of the bay'.truncate(20)

输出:

just sitting on...

var pa = document.getElementsByTagName('p')[0].innerHTML; var rpa = document.getElementsByTagName('p')[0]; / / console.log (pa。片(0,30)); var newPa = pa。片(0,29).concat(“…”); 战。textContent = newPa; console.log (newPa) < p > 一些文本这里一些文本一些文本这里一些文本一些文本这里一些文本一些文本这里一些文本一些文本这里一些文本一些文本这里一些文本一些文本这里一些文本一些文本 < / p >

一行ES6解决方案

如果字符串长度超过给定长度,它还会添加一个结束字符串,而不仅仅是截断字符串。

const limit = (string, length, end = "...") => {
    return string.length < length ? string : string.substring(0, length) + end
}

limit('Hello world', 5) // Hello...

除了子字符串方法,我找到了一个不错的小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文档中提到了更多的选项,如词序句子截断。

可以在内部JavaScript方法的帮助下修复此方法

Const truncate = (text, len) => { 如果(文本。长度> len && text。长度> 0){ 返回“${文本。(" ")。片(0,len)。Join(" ")}…'; }其他{ 返回文本; } };