例如,我有一些文件上传到我的服务器与巨大的名字,像这样:
1507633_519504261504361_1763887042_n.jpg
在这种情况下,显示长度太长,会打乱页面的格式。我希望将其修剪以保留前几个字符(比如前10个字符),但仍保留末尾的.jpg,以便人们知道扩展名。
1507633_519504261504361_1763887042_n.jpg (before) 1507633_51.jpg (after)
有没有一个相对简单的方法来做到这一点?
kpbpu0081#
好吧,你用点分割字符串,从文件名中分割扩展名(假设你没有文件名中包含.):
.
var split = initial.split('.'); var filename = split[0]; var extension = split[1];
然后,缩短文件名的长度:
if (filename.length > 10) { filename = filename.substring(0, 10); }
最后,将它们连接在一起。
var result = filename + '.' + extension;
编辑:这是普通的Javascript,不需要jQuery。
btqmn9zl2#
修剪文件名,如果您有一个带有文件名的元素列表,然后将扩展名与修剪文件名连接
<script src="js/jquery.js"></script> <script> $(document).ready(function(){ $('.uploadFilesItemHeader').find('#fileName').each(function() { var fileNames = this.innerText; var leftRightStrings = fileNames.split('.'); //file name var fName = leftRightStrings[0]; //file extension var fExtention = leftRightStrings[1]; var lengthFname = fName.length; //if file name without extension contains more than 15 characters if(lengthFname > 15){ $(this).html(fName.substr(0,10) + "..." + fName.substr(-5) + "." +fExtention); } }); }); <script>
bq9c1y663#
你想要完成的是重命名你的文件,使之有一个更短的名字。这将是一个服务器端的任务,jQuery不会与之相关。你可以用 AJAX 调用一个服务器端的脚本来重命名,保存并发送回新的文件名(然后可以在jQuery中使用),但这是一个非常糟糕的主意。你最好在文件生成后重命名它们(不管它们来自哪里),保存它们,然后在HTML中直接链接到新的文件名。
ygya80vv4#
var file_name = file.name; var arr_filename = file_name.split('.'); var file_ex = arr_filename[ arr_filename.length-1 ]; if ( file_name.length > 14 ) { file_name = file_name.substr(0,7) + '...' + file_name.substr(-7); }
响应中有错误。文件扩展名是数组中的最后一个元素,因为文件名中可能有几个点。
2g32fytz5#
function getFileName (str) { if (str.length > 22) { return str.substr(0, 11) + '...' + str.substr(-11) } return str }
示例用法:
getFileName('calm-handsome-man-profile-modern-haircut-178790527.jpeg') // Output: // calm-handso...790527.jpeg
brjng4g36#
下面是一个函数,它可以删除长度大于等于25个字符的所有名称的中间部分,而不删除它们。您可以在这里轻松地调整限制
function truncateMiddleOfLongFileNames(fileName) { let fileNameLength = fileName.length; if (fileNameLength < 25) { return fileName; } else { let extensionDelimiterIndex = fileName.lastIndexOf('.'); let middleRemovedName = `${fileName.substring(0,15)}...${fileName.substring(extensionDelimiterIndex - 3)}` return middleRemovedName; } }
它可以按如下方式使用
fileName = 'this_is_too_long_and_i_need_to_fix_it.png'; shortenedFileName = truncateMiddleOfLongFileNames(fileName);
返回
'this_is_too_lon..._it.png'
6条答案
按热度按时间kpbpu0081#
好吧,你用点分割字符串,从文件名中分割扩展名(假设你没有文件名中包含
.
):然后,缩短文件名的长度:
最后,将它们连接在一起。
编辑:这是普通的Javascript,不需要jQuery。
btqmn9zl2#
修剪文件名,如果您有一个带有文件名的元素列表,然后将扩展名与修剪文件名连接
bq9c1y663#
你想要完成的是重命名你的文件,使之有一个更短的名字。这将是一个服务器端的任务,jQuery不会与之相关。你可以用 AJAX 调用一个服务器端的脚本来重命名,保存并发送回新的文件名(然后可以在jQuery中使用),但这是一个非常糟糕的主意。你最好在文件生成后重命名它们(不管它们来自哪里),保存它们,然后在HTML中直接链接到新的文件名。
ygya80vv4#
响应中有错误。文件扩展名是数组中的最后一个元素,因为文件名中可能有几个点。
2g32fytz5#
示例用法:
brjng4g36#
下面是一个函数,它可以删除长度大于等于25个字符的所有名称的中间部分,而不删除它们。您可以在这里轻松地调整限制
它可以按如下方式使用
返回