【问题标题】:remove full path, keep filename only删除完整路径,仅保留文件名
【发布时间】:2012-03-10 07:58:34
【问题描述】:

尝试删除返回给 imgurl 的完整 url: 通常返回类似http://localhost/wordpress/wp-content/uploads/filename.jpghttp://localhost/wordpress/wp-content/uploads/images/filename.jpg

我想剥离除 filename.jpg 之外的所有内容并将其返回给 ahng_photos_upload_image。将所有内容剥离到最后一个正斜杠。 我怎样才能用 Jquery 做到这一点?

window.send_to_editor = function(html) {
imgurl = jQuery('img',html).attr('src');
jQuery('#ahng_photos_upload_image').val(imgurl);
tb_remove();
}

【问题讨论】:

  • txt.substring(txt.lastIndexOf("/") + 1)

标签: javascript jquery wordpress


【解决方案1】:

你不需要 jQuery,只需要普通的旧 JavaScript 就可以了 :)

alert('http://localhost/wordpress/wp-content/uploads/filename.jpg'.split('/').pop());​​

在你的情况下:

var filename = imgurl.split('/').pop();

【讨论】:

  • 像魅力一样工作。谢谢。我必须搜索一下 split() 和 pop() 是如何工作的。
  • @nevermind 其实linux中的路径是/。它们是 ` in windows. But it wouldn't matter anyway, since we're talking about URLs which are always /` 而不是路径。
  • @Andy 如果路径来自 url,它可能会起作用,但是当您尝试上传文件时,输入的值将类似于:“C:\fakepath\filename.txt”(在我的本地主机上在 Chromium 的 Ubuntu 上测试)。所以,出于这个原因,我个人更喜欢正则表达式的方式。
【解决方案2】:

您可以使用正则表达式来实现这一点..

var file = imgUrl.replace(/^.*[\\\/]/, '');

现在文件将只包含文件名..

【讨论】:

    【解决方案3】:

    如果您确信 URL 没有像哈希或参数这样有趣的东西,那么像这样的正则表达式就可以做到:

    var filename = imgurl.replace(/^.*\/([^/]*)$/, "$1");
    

    另外:不要忘记使用var 声明“imgurl”,如果您的 jQuery 版本是 1.6 或更高版本,您应该可能使用 .prop() 而不是 .attr()

    var imgurl = jQuery('img', html).prop('src');
    

    jQuery 在内部也将函数的两个参数形式变成了这样:

    var imgurl = jQuery(html).find('img').prop('src');
    

    所以你不妨这样编码。

    【讨论】:

      【解决方案4】:

      试试这个:

      imgurl.split('/').slice(-1);
      

      编辑:看看the version of @Andy使用pop()方法,后者比slice(-1)快。

      【讨论】:

        【解决方案5】:

        给你

        var filename = imgurl.split('/').slice(-1);
        

        祝你好运!

        【讨论】:

          【解决方案6】:

          另一种选择:

          var filename = imgurl.substring(imgurl.lastIndexOf('/') + 1);
          

          JS Fiddle demo.

          【讨论】:

            【解决方案7】:

            请注意,如果您不知道是正斜杠还是反斜杠,最好使用 RE 版本的 split:

            "path".split(/[\/\\]/).slice(-1)
            

            【讨论】:

              【解决方案8】:

              当您的文件名类似于 ./file.jpg 时,这是一个有效的答案

              var extension = fileName.slice((fileName.lastIndexOf(".") - 1 >>> 0) + 2);
              var baseName = fileName.replace(/^.*\/([^/]*)$/, "$1");
              var path = fileName.replace(/(^.*\/)([^/]*)$/, "$1");
              

              【讨论】:

                猜你喜欢
                • 2021-09-01
                • 1970-01-01
                • 1970-01-01
                • 2018-10-20
                • 1970-01-01
                • 2012-09-14
                • 2012-03-29
                • 1970-01-01
                • 2018-03-01
                相关资源
                最近更新 更多