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

以下是我得到的答案:

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

当前回答

ES6更新版本

const truncateString = (string = ", maxLength = 50) => 字符串。length > maxLength ? “${字符串。substring(0,最大长度)}……” :字符串 //演示上述函数 alert(truncateString('Hello World', 4));

其他回答

使用substring方法:

var length = 3;
var myString = "ABCDEFG";
var myTruncatedString = myString.substring(0,length);
// The value of myTruncatedString is "ABC"

在你的例子中:

var length = 3;  // set to the number of characters you want to keep
var pathname = document.referrer;
var trimmedPathname = pathname.substring(0, Math.min(length,pathname.length));

document.getElementById("foo").innerHTML =
     "<a href='" + pathname +"'>" + trimmedPathname + "</a>"

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

从文档中可以看到:

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

例子:

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

输出:

just sitting on...

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

是的,substring工作得很好:

stringTruncate('Hello world', 5); //output "Hello..."
stringTruncate('Hello world', 20);//output "Hello world"

var stringTruncate = function(str, length){
  var dots = str.length > length ? '...' : '';
  return str.substring(0, length)+dots;
};

以防你想按单词截断。

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);