我的字符串格式如下:
path/to/a/filename.txt
现在我想做一些字符串操作,这使我能够非常有效地从这段代码中删除“filename.txt”部分。换句话说,我希望我的字符串成为这样:
path/to/a/
最有效的方法是什么?目前我正在分割字符串并重新连接除最后一个元素之外的单独元素,但我感觉这是一种真正的,非常低效的方法。这是我当前效率低下的代码:
res.getPath = function(file)
{
var elem = file.split("/");
var str = "";
for (var i = 0; i < elem.length-1; i++)
str += elem[i] + "/";
return str;
}
答案 0 :(得分:102)
使用lastIndexOf()查找最后一个斜杠的位置,并使用substring()获取斜杠之前的部分。
str.substring(0, str.lastIndexOf("/"));
答案 1 :(得分:9)
这个怎么样:
"path/to/a/filename.txt".split("/").slice(0, -1).join("/")+"/"
答案 2 :(得分:1)
如果您使用的是NodeJS:
const path = require("path")
const removeFilePart = dirname => path.parse(dirname).dir
removeFilePart("/a/b/c/d.txt")
// Returns "/a/b/c"
答案 3 :(得分:0)
function splitPath(path) {
var dirPart, filePart;
path.replace(/^(.*\/)?([^/]*)$/, function(_, dir, file) {
dirPart = dir; filePart = file;
});
return { dirPart: dirPart, filePart: filePart };
}
那里更好
答案 4 :(得分:0)
如果要处理文件上传表单中的文件名,HTML5规范建议使用以下代码:
function extractFilename(path) {
if (path.substr(0, 12) == "C:\\fakepath\\")
return path.substr(12); // modern browser
var x;
x = path.lastIndexOf('/');
if (x >= 0) // Unix-based path
return path.substr(x+1);
x = path.lastIndexOf('\\');
if (x >= 0) // Windows-based path
return path.substr(x+1);
return path; // just the filename
}
参考: http://www.w3.org/TR/html5/number-state.html#file-upload-state
http://www.w3.org/TR/html5/forms.html#file-upload-state-(type=file)
答案 5 :(得分:0)
function getDirname(pathname, separator) {
var parts = pathname.split(separator);
if (parts[parts.length - 1].indexOf('.') > -1) {
return parts.slice(0, -1).join(separator)
}
return pathname;
}
用法:
var dir = getDirname(url.parse(request.url).pathname, '/');
var dir = getDirname(path.join('foo', 'bar', 'text.txt'), path.sep);
答案 6 :(得分:0)
test/dir/lib/file- _09.ege.jpg
- 将 - test/dir/lib/
file- _09.ege.jpg
- 将 - file- _09.ege.jpg
console.log("test - "+getPath('test/dir/lib/file- _09.ege.jpg'));
function getPath(path){
path = path.match(/(^.*[\\\/]|^[^\\\/].*)/i);
if(path != null){
return path[0];
}else{
return false;
}
}
console.log("test - "+getPath('test/dir/lib/file- _09.ege.jpg'));
function getPath(path){
path = path.match(/(^.*[\\\/]|^[^\\\/].*)/i);
if(path != null){
return path[0];
}else{
return false;
}
}
答案 7 :(得分:0)
str = str.split('/')
str.pop()
str.join('/') + '/'
答案 8 :(得分:0)
在节点中,您可以使用 path.dirname
const path = require('path')
fullFilePath = '/some/given/path/to-a-file.txt'
directoryPath = path.dirname(fullFilePath)
console.log(directoryPath) // ===> '/some/given/path'