缩短文本,但保持文件类型可见
Posted
技术标签:
【中文标题】缩短文本,但保持文件类型可见【英文标题】:Short down text, but leave the filetype visible 【发布时间】:2012-01-08 10:14:29 【问题描述】:我怎样才能做到这一点?
从 this-is-a-very-long-filename.jpg 到 this-is-a-very-lo [...] .jpg。
我已经在 Google 上搜索了几分钟,但找不到任何解决方案。你知道我该怎么做吗?
提前致谢!
【问题讨论】:
你需要什么特定的宽度? 好吧,我想要改变最大可见字符的能力,比如substring(0,8)+"..."
或其他东西。
你绝对需要 jQuery 来做这件事吗?
是的。我将一个 jQuery 函数扩展到我的上传页面。如果文件太长,则文件名在新行上继续。这是我不想要的。我只想缩短文件名但保持文件类型不变。
【参考方案1】:
你真的不需要 jQuery,你可以使用经典的 javascript:
<script>
function truncate(n, len)
var ext = n.substring(n.lastIndexOf(".") + 1, n.length).toLowerCase();
var filename = n.replace('.'+ext,'');
if(filename.length <= len)
return n;
filename = filename.substr(0, len) + (n.length > len ? '[...]' : '');
return filename + '.' + ext;
;
var s = 'this-is-a-very-very-very-long-file-name.jpg';
console.log(truncate(s, 100)); //this-is-a-very-very-very-long-file-name.jpg
console.log(truncate(s, 10)); //this-is-a-[...].jpg
console.log(truncate(s, 4)); //this[...].jpg
</script>
【讨论】:
我有一个问题。当我选择一个文件时,我会得到 Chamma Swaetty Lobbs.jpg.jpg 作为你的函数的完整文件名。当我查看代码时,我看不出它有任何问题(我有点像 JavaScript 菜鸟)。你能看出问题吗? :) 哦,因为文件太短,又放了一遍,让我修一下,对不起 没关系 :) 每个人有时都会犯错 ^^ 再次感谢! 阅读the difference betweensubstr
and substring
。我想应该是n.substr(n.lastIndexOf(".") + 1, n.length)
。但是substring
的索引比字符串的长度更长,以原始长度结束,所以这里并不重要。
另外,使用var filename = n.substring(0, n.lastIndexOf('.'))
获取文件名可能会更好。因为replace('.'+ext, '')
从文件名中删除了所有 个扩展名ext
。只需确保 n.lastIndexOf('.')
不是负数(文件名中永远不会出现点的情况)。【参考方案2】:
使用这个插件:
http://papermashup.com/truncate-text-with-the-jtruncate-jquery-plugin/
【讨论】:
谢谢,但这对我没有帮助:/以上是关于缩短文本,但保持文件类型可见的主要内容,如果未能解决你的问题,请参考以下文章