jquery 如何在JavaScript中修剪文件名的长度而保留扩展名?

w1e3prcc  于 2023-01-25  发布在  jQuery
关注(0)|答案(6)|浏览(152)

例如,我有一些文件上传到我的服务器与巨大的名字,像这样:

1507633_519504261504361_1763887042_n.jpg

在这种情况下,显示长度太长,会打乱页面的格式。我希望将其修剪以保留前几个字符(比如前10个字符),但仍保留末尾的.jpg,以便人们知道扩展名。

1507633_519504261504361_1763887042_n.jpg (before)

1507633_51.jpg (after)

有没有一个相对简单的方法来做到这一点?

kpbpu008

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。

btqmn9zl

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>

bq9c1y66

bq9c1y663#

你想要完成的是重命名你的文件,使之有一个更短的名字。这将是一个服务器端的任务,jQuery不会与之相关。你可以用 AJAX 调用一个服务器端的脚本来重命名,保存并发送回新的文件名(然后可以在jQuery中使用),但这是一个非常糟糕的主意。你最好在文件生成后重命名它们(不管它们来自哪里),保存它们,然后在HTML中直接链接到新的文件名。

ygya80vv

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

响应中有错误。文件扩展名是数组中的最后一个元素,因为文件名中可能有几个点。

2g32fytz

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
brjng4g3

brjng4g36#

下面是一个函数,它可以删除长度大于等于25个字符的所有名称的中间部分,而不删除它们。您可以在这里轻松地调整限制

  • 这将返回扩展名前面的前15个字符,后跟......和扩展名前面的3个字符以及扩展名本身
  • 这将处理文件名中包含多个.s的情况
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'

相关问题