すでに 1 時間以上試していますが、正しい方法がわかりません。ただし、おそらくかなり簡単です。
次のようなものがあります:foo/bar/test.html
jQuery を使用して、最後の の後のすべてを抽出したいと思います/
。上記の例では、出力は になりますtest.html
。
substr
とを使用して実行できると思いますindexOf()
が、有効な解決策が見つかりません。
ベストアンサー1
少なくとも 3 つの方法:
正規表現:
var result = /[^/]*$/.exec("foo/bar/test.html")[0];
[^/]*
...これは、文字列 ( ) の末尾にある「スラッシュを含まない一連の文字を取得する」( ) ことを示しています$
。次に、返された一致オブジェクトにインデックスを付けて一致した文字を取得します ( [0]
)。一致オブジェクトでは、最初のエントリは一致した文字列全体です。キャプチャ グループは必要ありません。
lastIndexOf
と の使用substring
:
var str = "foo/bar/test.html";
var n = str.lastIndexOf('/');
var result = str.substring(n + 1);
lastIndexOf
名前の通り、インデックスを見つけます。最後文字列内の文字 (つまり文字列) の出現を検出し、見つからない場合は -1 を返します。 10 回中 9 回は、おそらく戻り値 ( if (n !== -1)
) をチェックすることになりますが、上記では 1 を追加して substring を呼び出しているため、最終的にはstr.substring(0)
文字列を返すだけになります。
使用Array#split
スディールとトム・ウォルターズがこれをカバーしているここそしてここただし、完全を期すために:
var parts = "foo/bar/test.html".split("/");
var result = parts[parts.length - 1]; // Or parts.pop();
split
指定された区切り文字を使用して文字列を分割し、配列を返します。
lastIndexOf
/解決substring
策はおそらく最も効率的です (ただし、エンジンはそれぞれ大きく異なるため、JavaScript とパフォーマンスについて何かを言うときは常に注意する必要があります)。ただし、これをループで何千回も実行しない限りは、それは問題ではなく、コードの明確さを追求します。