0

パスの最後のディレクトリを返そうとしています。たとえば、次のパスの場合、「3 番目」を返したいとします。私のパスは常にスラッシュなしで始まり、スラッシュで終わります。パスが空の場合、空の文字列を返したいです。

第一、第二第三/

以下は私の試みです。より良い方法に関する推奨事項はありますか?

var path='first/second/third/';
path1=path.substring(0, path.length - 1);
path2=path1.substr(path1.lastIndexOf('/') + 1);
4

7 に答える 7

2

成功への道を分ける

var parts = path.split("/");
var last = parts[parts.length-1];

もちろん、fist/path/to/last対で何をするかを決める必要がありますfirst/path/to/last/。ユースケースでは、いずれかまたは両方の処理が必要になる場合があります。

于 2013-10-11T17:20:26.310 に答える
2
var path='first/second/third/';
var path2 = path.split('/');
path2 = path2[path2.length-2];

-2最後のスラッシュのために最後のものが空であるためです。

于 2013-10-11T17:21:02.120 に答える
2

そのようなことを達成するためのより軽い方法:)

// Remove trailing slash and split by slashes, then pick the last occurrence
path = path.replace(/\/$/, "").split("/").pop();
于 2013-10-11T17:21:14.417 に答える
0

segmentこれは、URL のような文字列を受け取り、その特定の部分を返す関数です (0 ではなく 1 カウントを使用)。したがって、segment(str, 1)return first、およびsegment(str, 3)return thirdtrimまた、セグメント配列に空のアイテムを引き起こす厄介な前後のスラッシュを取り除く関数も含まれています...しかし、それらが必要な場合return str.split...は、セグメント関数で使用するだけです。

var trim = function (str, charset) {
    charset = charset || "\s";

    var regex = new RegExp("^[" + charset + "]+|[" + charset + "]+$", "g")
    return str.replace(regex, "");
};

var segment = function (str, offset) {
    return trim(str, '/').split('/')[offset - 1];
}
于 2013-10-11T17:38:49.307 に答える
0

パスを分割してみて、最後のディレクトリが定義されていない場合 (パスが空であるため) は、空の文字列を使用します。

var path='first/second/third/';
var parts = path.split("/");
var path1 = parts[parts.length - 2] || ""
于 2013-10-11T17:20:51.360 に答える
0

ここでは分割の方が良い/よりクリーンな選択になるかもしれません..

var directories = path.split("/");
var lastDir     = directories[directories.length - 1]
于 2013-10-11T17:20:53.093 に答える