2016-11-04 17 views
0

私はnodejsの初心者です。私は複数の方法を試みたが、私のために働かなかった。私は、例えば、HTTP URLでURLのfilename.extensionをnodejsを使用して削除します。

でfilename.extensionを削除しようとしている

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

URL内のファイル名

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

には動的です、私は "myfile.txt"コードで明示的に使用することはできません。

正規表現を使用して、私は、任意のWebフレームワークを使用していない、しかし、私はhttp://stringjs.comライブラリ

+1

は、ファイル名は常にURLの最後の項目になりますか?またはそれは中央にある可能性がありますか?常に終わりの場合は、文字列を '/'に分割して最後のオブジェクトを配列内にドロップし、文字列に再結合します。 –

+0

はい、常に配列の最後です。それは良い方法です。しかし、他の簡単な方法があればそれを知りたい。 – Sathish

答えて

2

を持っている:

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

正規表現はで.によって分離し、前に付い二つの文字列が一致します/(あなたの場合は/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('/'); 

スプリットURLへの参加は、得られた配列(myfile.txt)から最後の要素を除去し、セパレータとして/と一緒に戻ってそれらを結合します。

+0

ありがとう、それは私のために働いた – Sathish

+0

ちょうど興味がありません、あなたはどちらを使用していますか? – schroffl

+1

最後の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

関連する問題