有没有办法可以从完整路径获取最后一个值(基于'\'符号)?
例:
C:\Documents and Settings\img\recycled log.jpg
在这种情况下,我只想recycled log.jpg
从JavaScript的完整路径中获取.
var filename = fullPath.replace(/^.*[\\\/]/, '')
这将处理\ OR/in路径
仅仅为了表现,我测试了这里给出的所有答案:
var substringTest = function (str) { return str.substring(str.lastIndexOf('/')+1); } var replaceTest = function (str) { return str.replace(/^.*(\\|\/|\:)/, ''); } var execTest = function (str) { return /([^\\]+)$/.exec(str)[1]; } var splitTest = function (str) { return str.split('\\').pop().split('/').pop(); } substringTest took 0.09508600000000023ms replaceTest took 0.049203000000000004ms execTest took 0.04859899999999939ms splitTest took 0.02505500000000005ms
获胜者是Split和Pop风格的答案,感谢bobince!
在Node.js中,您可以使用Path的解析模块 ......
var path = require('path');
var file = '/home/user/dir/file.txt';
var filename = path.parse(file).base;
//=> 'file.txt'
路径来自哪个平台?Windows路径不同于POSIX路径不同于Mac OS 9路径不同于RISC OS路径不同...
如果它是一个Web应用程序,其中文件名可以来自不同的平台,则没有一个解决方案.然而,合理的尝试是使用'\'(Windows)和'/'(Linux/Unix/Mac以及Windows上的替代方案)作为路径分隔符.这是一个非RegExp版本,可以带来额外的乐趣:
var leafname= pathname.split('\\').pop().split('/').pop();
Ates,您的解决方案不能防止空字符串作为输入.在那种情况下,它失败了TypeError: /([^(\\|\/|\:)]+)$/.exec(fullPath) has no properties
.
bobince,这是一个处理DOS,POSIX和HFS路径分隔符(和空字符串)的nickf版本:
return fullPath.replace(/^.*(\\|\/|\:)/, '');
以下JavaScript代码行将为您提供文件名.
var z = location.pathname.substring(location.pathname.lastIndexOf('/')+1); alert(z);
并不比nickf的答案更简洁,但是这个直接"提取"答案而不是用空字符串替换不需要的部分:
var filename = /([^\\]+)$/.exec(fullPath)[1];
询问"获取没有扩展名的文件名"的问题请参考此处,但没有解决方法.以下是Bobbie解决方案修改的解决方案.
var name_without_ext = (file_name.split('\\').pop().split('/').pop().split('.'))[0];