【问题标题】:jQuery, Get filename without the extension and then replace stringjQuery,获取不带扩展名的文件名,然后替换字符串
【发布时间】:2012-10-23 12:16:12
【问题描述】:

我有这个代码来获取文件扩展名:

filename1 = "a.crudely_formed.document_name.jpg"         
var fileExtension = filename1.substring(filename1.lastIndexOf('.')); 

现在我只需要获取文件名,而不需要扩展名。正如您在示例中看到的文件名可以由用户随意命名,这就是我必须使用 lastIndexOf() 方法的原因。 我已经搜索了执行此操作的方法,但一无所获。

此外,当我有文件名(不带扩展名)时,我需要与此类似的东西

$filename = strtolower(str_replace(array('  ', ' '), '-', preg_replace('/[^a-zA-Z0-9 s]/', '', trim($filename))));

上面的基本意思是,用破折号替换所有空格,只允许 a-z 和 A-Z 字符以及所有数字。在上面的示例中,例如 åöä 被替换为 aoa。

关于如何在 jQuery 中执行此操作的任何建议?

【问题讨论】:

  • filename = filename1.substring(0,filename1.lastIndexOf('.')); ?
  • 谢谢!把我推向了正确的方向。关于第二个问题的任何想法?

标签: jquery regex str-replace


【解决方案1】:

好的,只获取我使用的文件名:

var output = filename1.substr(0, filename1.lastIndexOf('.')) || filename1;

要替换我使用的字符:

output = output.replace(/[^a-z0-9\s]/gi, '').replace(/[_\s]/g, '-');

【讨论】:

    【解决方案2】:

    有更好的方法来获取文件名和扩展名

    文件名 = 'upload.png';

    如果您只需要文件名

    filename.split('.').shift();
    

    如果你只需要扩展

    filename.split('.').pop();
    

    【讨论】:

    • 当文件名本身包含点(。)时,您的代码将失败。
    • 如果是这种情况,您可以删除扩展并左转
    猜你喜欢
    • 2011-06-15
    • 2011-10-02
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    相关资源
    最近更新 更多