1. ホーム
  2. javascript

[解決済み] JavaScriptで最後のスラッシュの後の文字列の値を取得する

2022-05-10 18:43:52

質問

すでに1時間以上試していますが、正しいやり方がわかりません。おそらくかなり簡単だと思いますが。

私は次のようなものを持っています。 foo/bar/test.html

の後をjQueryで抽出したい。 / . 上記の例では、出力は次のようになります。 test.html .

を使ってできるのでしょう。 substrindexOf() を使用することができますが、私は作業ソリューションを見つけることができません。

どのように解決するのですか?

少なくとも3つの方法があります。

正規表現。

var result = /[^/]*$/.exec("foo/bar/test.html")[0];

...これは、"スラッシュを含まない一連の文字を取得する"と言うものです( [^/]* ) の末尾にある文字列 ( $ ). そして、返されたマッチオブジェクトにインデックスを付けて、マッチした文字を取得します ( [0] ); マッチオブジェクトでは、最初のエントリがマッチした文字列全体となります。キャプチャーグループは必要ありません。

ライブの例

使用方法 lastIndexOfsubstring :

var str = "foo/bar/test.html";
var n = str.lastIndexOf('/');
var result = str.substring(n + 1);

lastIndexOf のインデックスを見つけることです。 最後の のインデックスを見つけ、見つからなければ -1 を返します。十中八九、この返り値をチェックしたいと思うでしょう ( if (n !== -1) ) ですが、上の例ではそれに 1 を加えて substring を呼び出しているので、結局は str.substring(0) となり、単に文字列が返されるだけです。

を使って Array#split

Sudhir と Tom Walters はこれをカバーしています。 ここで そして はこちら を追加していますが、念のため。

var parts = "foo/bar/test.html".split("/");
var result = parts[parts.length - 1]; // Or parts.pop();

split は、与えられたデリミタを用いて文字列を分割し、配列を返します。

lastIndexOf / substring の解決策は おそらく が最も効率的ですが (エンジンが互いに大きく異なるため、JavaScript とパフォーマンスについて何か言うのは常に注意が必要です)、ループ内で何千回もこれを行わない限り、それは重要ではなく、私はコードの明快さを追求します。