1

パスがあり、最後の/の後にすべてをポップしようとしているので、この場合は「folder」を使用して、newpathをC:// local / drive /folder/のままにします。

pop()を使用して最後の/をポップオフしようとしましたが、パスの最初の部分を新しいパスにすることができません。

var path = C://local/drive/folder/folder
var newpath = path.split("/").pop();
var newpath = newpath[0]; //should be C://local/drive/folder/

どうすればこれを達成できますか?

4

5 に答える 5

4

.slice()の代わりに使用pop()

var newpath = path.split("/").slice(0, -1).join("/");

最後の部分も必要な場合は、を使用します.pop()が、最初に配列を別の変数に格納します。

var parts = path.split("/");

var last = parts.pop();
var first = parts.join("/");

lastこれで最後の部分があり、最後の部分のfirst前にすべてがあります。


別の解決策は.lastIndexOf()、文字列で使用することです。

var idx = path.lastIndexOf("/");

var first = path.slice(0, idx);
var last = path.slice(idx + 1);
于 2012-12-01T23:38:09.240 に答える
2

最後のステートメントを次のように置き換えるだけです。

var path = C://local/drive/folder/folder
path.split("/").pop(); // Discard the poped element.
var newpath = path.join("/"); // It will be C://local/drive/folder

注意事項Array.poppop:メソッドを呼び出すたびに、最後の要素が返され、配列から削除されます。

于 2012-12-01T23:45:04.823 に答える
1

正規表現を使用することもできます:

function stripLastPiece(path) {
    var matches = path.match(/^(.*\/)[^\/]+$/);
    if (matches) {
        return(matches[1]);
    }
    return(path);
}

実例: http: //jsfiddle.net/jfriend00/av7Mn/

于 2012-12-01T23:41:03.220 に答える
1

配列の最初の部分を取得したい場合。

var firstWord = fullnamesaved.split( "").shift();

これは、スペースの後のすべてのものを無視します。

于 2016-06-09T10:53:17.840 に答える
0
var foo = "C://local/drive/folder/folder";
foo.match(/(.+\/)[^\/]+$/);

結果は次のようになります。["C://local/drive/folder/folder", "C://local/drive/folder/"]

私はuser1689607の答えを好むが

于 2012-12-01T23:40:35.700 に答える