79

string に対して次のアクションを実行しようとしています:

  • 文字の最後の出現を見つけます"/"
  • その文字より前のすべてを削除します。
  • 文字列の残りを返します。

より明確にするために、次の文字列があるとしましょう:

var string = "/Roland/index.php"; // Which is a result of window.location.pathname

ここから抽出する必要があるのは、実際のページ以外のすべてです。次のようなものです。

var result = "index.php" // Which is what I need to be returned

もちろん、これは一例に過ぎません。明らかに異なるページを作成することになるためですが、同じ原則が適用されます。

誰かがそれを解決するのを手伝ってくれるかどうか疑問に思っていました。次のアクションを試しましたが、成功しませんでした:

var location = window.location.pathname;
var result = location.substring(location.lastIndexOf["/"]);
4

5 に答える 5

120

かっこをかっこに置き換えるだけで、正しい考えが得られます。

var string = "/Roland/index.php";
var result = string.substring(string.lastIndexOf("/") + 1);

これはjsfiddleの例であり、これはMozilla Developer Networkの .lastIndexOf() メソッドの説明です。

于 2012-05-26T16:10:10.583 に答える
13

個人的には、正規表現を使用します。

var result = string.replace(/^.*\/(.*)$/, "$1");

正規表現に精通している場合 (そうでない場合は、そうすべきです :-)、慣れていない場合ほど見慣れないものではありません。

リーディング^により、この正規表現は一致を文字列の先頭に「固定」します。は1文字に\/一致します (は正規表現パーサーを混乱させないようにするためです) 。次に、文字列の から末尾までのすべてに一致します。イニシャルは、最後の文字より前の文字も含めて、可能な限り飲み込みます。置換テキスト は、「最初に一致したグループの内容」を意味する特別な形式です。この正規表現には、最後の(の) を囲む括弧で形成されたグループがあります。それは最後の後のすべてのものになるでしょう/\/(.*)$/.*/"$1".*(.*)$/、したがって、全体的な結果は、文字列全体がそのものだけに置き換えられるということです. (文字がないためにパターンが一致しない場合は/、何も起こりません。)

于 2012-05-26T16:10:34.390 に答える
10

最後の要素のオン/とオフで文字列を配列に分割します。.pop()末尾のスラッシュがある場合は、最初にそれを取り除く必要があることに注意してください。

var locationstring = window.location.pathname;
// replace() the trailing / with nothing, split on the remaining /, and pop off the last one
console.log(locationstring.replace(/\/$/, "").split('/').pop());

/path/stuff/here/末尾に があるような URL の場合、/そのケースが ではなく空の文字列を返す必要がある場合は、上記を変更して呼び出しチェーンからhereを削除します。.replace()末尾のスラッシュに関係なく最後のコンポーネントが必要であると想定しましたが、誤って想定した可能性があります。

console.log(locationstring.split('/').pop());
于 2012-05-26T16:09:51.930 に答える
2
    var result = /\/([^\/]*)$/.exec(location)[1];

//"remove-everything-before-the-last-occurrence-of-a-character#10767835"

注:これlocationは でありwindow.location、あなたの ではありませんvar location

于 2012-05-26T16:17:11.670 に答える