有没有办法从完整路径中获取最后一个值(基于“\”符号)?
例子:
C:\Documents and Settings\img\recycled log.jpg
在这种情况下,我只想recycled log.jpg
从 JavaScript 中获取完整路径。
有没有办法从完整路径中获取最后一个值(基于“\”符号)?
例子:
C:\Documents and Settings\img\recycled log.jpg
在这种情况下,我只想recycled log.jpg
从 JavaScript 中获取完整路径。
var filename = fullPath.replace(/^.*[\\\/]/, '')
这将处理路径中的 \ OR /
只是为了性能,我测试了这里给出的所有答案:
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 的 parse module...
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 路径不同...
如果它是一个文件名可以来自不同平台的网络应用程序,则没有一种解决方案。然而,合理的方法是同时使用 '\' (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(/^.*(\\|\/|\:)/, '');