2016-11-04 38 views
0

我是nodejs的初学者,所以请原谅这个问题是否已经回答。我尝试了多种方法,但没有为我工作。使用nodejs删除url中的filename.extension

我试图删除filename.extension在HTTP URL

例如:

http://somedomain.com/path1/path2/path3/myfile.txt

http://somedomain.com/path1/path2/path3/

在URL中的文件名是动态,所以我不能在代码中明确地使用“myfile.txt”。

我没有使用任何web框架,但我有http://stringjs.com

+1

将文件名总是在URL中的最后一个项目?或者它可能在中间?如果它总是结束,则将字符串拆分为'/'并将最后一个对象放入数组中,然后重新加入字符串 –

+0

是的,总是在数组中最后一个。这是一个好方法。但想知道任何其他简单的方法。 – Sathish

回答

2

使用正则表达式:

'http://somedomain.com/hello1/hello2/hello3/myfile.txt'.replace(/\/\w+\.\w+$/, ''); 

的正则表达式匹配由.分离,preceeded由两串//myfile.txt在你的情况),然后被替换为空字符串。此方法在节点以及纯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('/'); 

拆分链接在每个/,从所得的阵列(myfile.txt)删除最后一个元件和/作为隔板一起加入他们回来。

+0

谢谢,它为我工作 – Sathish

+0

只是出于兴趣,你使用哪一个? – schroffl

+1

最后一个 - 拆分,切片并加入:) – Sathish

1

你可以这样说:

var path = 'http://somedomain.com/hello1/hello2/hello3/myfile.txt'; 
path = path.split('/'); 
path.splice(path.length-1,1); 
path = path.join('/'); 
+0

谢谢,它为我工作 – Sathish