【问题标题】:Trimming a string from the end in Javascript在Javascript中从末尾修剪字符串
【发布时间】:2012-01-04 18:54:27
【问题描述】:

在 Javascript 中,如何将字符串从末尾开始修剪多个字符,追加另一个字符串,然后再次重新追加最初截断的字符串?

特别是我有filename.png,想把它变成filename-thumbnail.png。

我正在寻找类似的东西:

var sImage = "filename.png";
var sAppend = "-thumbnail";
var sThumbnail = magicHere(sImage, sAppend);

【问题讨论】:

标签: javascript string trim


【解决方案1】:

您可以使用.slice,它接受负索引:

function insert(str, sub, pos) {
    return str.slice(0, pos) + sub          + str.slice(pos);
    //     "filename"        + "-thumbnail" + ".png"
}

用法:

insert("filename.png", "-thumbnail", -4); // insert at 4th from end

【讨论】:

  • 这是一个非常方便的函数,可以在多个实例中正常工作。我看到的唯一潜在问题是文件扩展名可能并不总是 4 个字符(包括 .)。
  • @Colin O'Dell:是的,没错。我没有使用正则表达式之类的东西,因为 OP 只说明了“从末尾开始的一些字符”。
【解决方案2】:

尝试使用正则表达式(可以在https://developer.mozilla.org/en/JavaScript/Guide/Regular_Expressions 找到好的文档)

我还没有测试,但尝试类似:

var re = /(.*)\.png$/;  
var str = "filename.png";  
var newstr = str.replace(re, "$1-thumbnail.png");  
console.log(newstr);

【讨论】:

    【解决方案3】:

    我会使用正则表达式来查找文件名的各个部分,然后根据需要从那里重新排列和添加字符串。

    类似这样的:

    var file='filename.png';
    
    var re1='((?:[a-z][a-z0-9_]*))';
    var re2='.*?';
    var re3='((?:[a-z][a-z0-9_]*))';
    
    var p = new RegExp(re1+re2+re3,["i"]);
    var m = p.exec(file);
    if (m != null) {
        var fileName=m[1];
        var fileExtension=m[2]; 
    }
    

    这将为您提供文件名中的文件名和文件扩展名中的文件扩展名。从那里你可以附加或添加任何你想要的东西。

    var newFile = fileName + '-thumbnail' + '.' + fileExtension;
    

    【讨论】:

      【解决方案4】:

      也许比正则表达式更简单,您可以使用 lastindexof(参见 http://www.w3schools.com/jsref/jsref_lastindexof.asp)来查找文件扩展名(查找句点 - 这允许像 .html 这样更长的文件扩展名),然后按照 pimvdb 的建议使用 slice。

      【讨论】:

        【解决方案5】:

        您可以使用正则表达式并执行以下操作:

        var sImage = "filename.png";
        var sAppend = "-thumbnail$1";
        var rExtension = /(\.[\w\d]+)$/;
        
        var sThumbnail = sImage.replace(rExtension, sAppend);
        

        rExtension 是一个查找扩展名的正则表达式,将其捕获到$1 中。你会看到$1出现在sAppend里面,意思是“把扩展放在这里”。

        编辑:此解决方案适用于任何长度的任何文件扩展名。在此处查看实际操作:http://jsfiddle.net/h4Qsv/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-16
          • 2012-02-23
          • 2013-09-11
          • 2017-05-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多