jQuery,获取不带扩展名的文件名并替换字符串

7
我有这段代码来获取文件扩展名:
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实现这个功能的建议?


2
filename = filename1.substring(0,filename1.lastIndexOf('.')); 的意思是将文件名从最后一个"."之前的所有字符截取下来。 - Timm
谢谢!你让我朝正确的方向前进了。对于第二个问题有什么想法吗? - Albin N
2个回答

18

好的,为了仅获得文件名,我使用了以下代码:

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

为了替换字符,我使用了这个:

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

4

有一种更好的方式来获取文件名和扩展名

fileName = 'upload.png';

如果你只需要文件名


代码示例:
filename.split('.').shift();

如果你只需要扩展功能

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

当文件名本身包含点(.)时,您的代码会失败。 - Pankaj Shinde
如果这种情况,您可以删除扩展名并采取左侧。 - Nisharg Shah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接