[解決済み] JavaScriptで最後のスラッシュの後の文字列の値を取得する
質問
すでに1時間以上試していますが、正しいやり方がわかりません。おそらくかなり簡単だと思いますが。
私は次のようなものを持っています。
foo/bar/test.html
の後をjQueryで抽出したい。
/
. 上記の例では、出力は次のようになります。
test.html
.
を使ってできるのでしょう。
substr
と
indexOf()
を使用することができますが、私は作業ソリューションを見つけることができません。
どのように解決するのですか?
少なくとも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 を返します。十中八九、この返り値をチェックしたいと思うでしょう (
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 とパフォーマンスについて何か言うのは常に注意が必要です)、ループ内で何千回もこれを行わない限り、それは重要ではなく、私はコードの明快さを追求します。
関連
-
Vueの要素ツリーコントロールに破線を追加する説明
-
WeChatアプレット用ユニアプリによるグローバルシェアリング
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み] JavaScriptでクエリ文字列の値を取得するにはどうすればよいですか?
-
[解決済み] Pythonで文字列の部分文字列を取得するにはどうすればよいですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】オブジェクトの配列を文字列のプロパティ値でソートする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
vue3.0プロジェクトのアーキテクチャを構築するための便利なツール
-
jQueryのコピーオブジェクトの説明
-
vueのグローバルがscss(mixin)を導入。
-
Javascript Bootstrapのグリッドシステム、ナビゲーションバー、ローテーションの説明
-
vueはopenlayersを使用してスカイマップとガオードマップをロードする
-
JavaScriptの配列共通メソッド解説
-
[解決済み】awaitは非同期関数でのみ有効です。
-
[解決済み】"フォームが接続されていないため、フォームの送信がキャンセルされました "というエラーの取得について
-
[解決済み】TypeScript-のAngular Frameworkエラー - "exportAsがngFormに設定されたディレクティブはありません"
-
モジュールのビルドに失敗しました。Error: ENOENT: no such file or directory, scandir 'D:\.... \node_modules