首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >减少javascript中文件名的最优化或最简单的方法是什么?

减少javascript中文件名的最优化或最简单的方法是什么?
EN

Stack Overflow用户
提问于 2010-03-03 23:29:30
回答 2查看 164关注 0票数 1

最近,我在javascript中创建了一个函数,它接受文件名和最大字符限制,结果需要遵循以下规则:

  • 始终包括文件扩展名
  • 如果发生收缩,请保持文件名的第一部分和最后部分不变。
  • 始终用‘.’替换已删除的字符
  • 如果文件长度低于最大值,则不做任何操作。
  • 您可以假设最大值至少有5个字符长。

现在我已经解决了这个问题,但是它让我思考在javascript中使用正则表达式或其他技术是否有一种更优雅或更简单的方法来完成这个任务。这也给了我一个尝试jsFiddle的机会。因此,考虑到这一点,我的职能是:

代码语言:javascript
复制
function ReduceFileName(name, max){        
if(name.length > max){        
    var end = name.substring(name.lastIndexOf('.'));
    var begin = name.substring(0, name.lastIndexOf('.'));
    max = max - end.length - 3;
    begin = begin.substr(0,max/2) + '...' + begin.substr(begin.length-(max/2) , max/2 + 1);
    return begin + end;        
}    
return name;
}

这是在js试验

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-18 16:03:53

因为我在这个问题上没有太多的活动,所以我假设没有更好的方法来做这件事,所以我将把我的方法作为答案,直到其他人想出其他的答案。

代码语言:javascript
复制
function ReduceFileName(name, max){        
if(name.length > max){        
    var end = name.substring(name.lastIndexOf('.'));
    var begin = name.substring(0, name.lastIndexOf('.'));
    max = max - end.length - 3;
    begin = begin.substr(0,max/2) + '...' + begin.substr(begin.length-(max/2) , max/2 + 1);
    return begin + end;        
}    
return name;
}
票数 0
EN

Stack Overflow用户

发布于 2010-03-04 00:51:50

我不确定正则表达式是否一定更优雅,但到目前为止,我提出了以下通过测试的方法:

代码语言:javascript
复制
function ReduceFileName(name, max){        
    if(name.length > max) {
        var ell ="\u2026"; // defines replacement characters
        var ext = (/\.[^\.]*$/.exec(name) || [""])[0]; // gets extension (with dot) or "" if no dot
        var m = (max-ell.length-ext.length)/2; // splits the remaining # of characters
        var a = Math.ceil(m);
        var z = Math.floor(m);
        var regex = new RegExp("^(.{"+a+"}).*(.{"+z+"})"+ext, "");
        var ret = regex.exec(name);
        return ret[1]+ell+ret[2]+ext;
    }
    return name;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2375844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档