我是nodejs的初学者,所以如果这个问题已经回答了,请原谅。我尝试了多种方法,但都不适合我。
我正在尝试删除文件名。HTTP url中的扩展
例如:http://somedomain.com/path1/path2/path3/myfile.txt http://somedomain.com/path1/path2/path3/url中的文件名是动态的,所以我不能在代码中显式地使用"myfile.txt"。
我没有使用任何web框架,但我有http://stringjs.com库
使用正则表达式:
'http://somedomain.com/hello1/hello2/hello3/myfile.txt'.replace(//w+.w+$/, '');
正则表达式匹配两个字符串,由.
分隔,前面是/
(在您的示例中是/myfile.txt
),然后由空字符串替换。此方法在node和纯javascript中都有效。
使用node.js的path
模块:
let path = require('path');
let parsed = path.parse('http://somedomain.com/hello1/hello2/hello3/myfile.txt');
console.log(parsed.dir) // => http://somedomain.com/hello1/hello2/hello3
node.js有一个用于解析路径的内置模块。然而,它不是为解析uri而设计的,但在您的情况下应该可以很好地工作。
分割、切片和连接
let url = 'http://somedomain.com/hello1/hello2/hello3/myfile.txt';
url.split('/').slice(0, -1).join('/');
在每个/
处拆分url,从结果数组(myfile.txt
)中删除最后一个元素,并以/
作为分隔符将它们重新连接在一起。
你可以这样做:
var path = 'http://somedomain.com/hello1/hello2/hello3/myfile.txt';
path = path.split('/');
path.splice(path.length-1,1);
path = path.join('/');