2012-05-26 16 views
42

の最後に出現する前に、すべてを削除します。は、私は、文字列で次のアクションを実行しようとしている文字

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

    var string = "/Roland/index.php"; // Which is a result of window.location.pathname 
    
    今、私はそれから抽出するために必要なものを

    実際のページが、すべて、このようなものです::

    ​​3210

をより明確にするために、のは、私は次の文字列を持っているとしましょう

もちろん、これは単なる例ですが、明らかに私は別のページを持ちますが、同じ原則が適用されるためです。

私は誰かがそれを解決するのに役立つかどうか疑問に思っていました。私は、次の操作を試みたが、成功しません:

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

あなたは近くでした。 'lastIndexOf'は関数であり、グローバル変数の場合は' location'をオーバーライドできません。 'loc.substring(loc.lastIndexOf("/")+)'これはスラッシュそのものを含めたくないので、 'loc.substring(loc.lastIndexOf("/")) 。 –

答えて

67

括弧をかっこで置き換えるだけです。ここ

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

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

+0

...間違ったかっこがあります。 :p – Amadan

+0

ああ、私はそれに気づいていません:) – Roland

+6

それはすべて* *最後のオカレンスの後に削除されます。 OPはすべてを*前に取り除きたい。実際には 'location.substring(location.lastIndexOf("/")+ 1)'でなければなりません。 –

6

は最後の要素オフ/.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()); 

その場合はhereではなく、空の文字列を返すべきである場合は、/末尾いる/path/stuff/here/のようなURLの場合は、呼び出しチェーンから.replace()を削除するには、上記を変更する場合

。私はあなたが末尾のスラッシュに関係なく最後のコンポーネントを望むと仮定しましたが、誤って仮定している可能性があります。

console.log(locationstring.split('/').pop()); 
+0

私のソリューションはよりクリーンだと思いますが、いずれにしてもその配列を "/"に戻す必要があります。 –

+0

私は '.pop()'を使わないほうがいいです:) – Roland

+0

@Dr。 DredelのOPは文字列の残りの部分を必要としません。最後の部分だけですので、一緒に戻ってくる必要はありません。 –

8

個人的に私は、正規表現を使用したい:あなたが正規表現に精通している(とときにそれがあるよう:-)それはのように外国人、見ていないんではない場合があるべき場合

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

を慣れない

先頭の^は、文字列の先頭にこの正規表現を強制的に「アンカー」します。 \/は、/という文字に一致します(\は、/が正規表現パーサを混乱させないようにするためのものです)。次に(.*)$は、/からその文字列の最後までのすべてのものと一致します。最初の.*は可能な限り多くを取り込みます。最後の文字の前には/文字が含まれます。置換テキスト"$1"は、「最初に一致したグループの内容」を意味する特別な形式です。この正規表現には、最後に.*(かっこで囲まれたグループ)((.*)$)があります。それは最後の/の後のすべてのものになるので、全体的な結果は文字列全体がちょうどそのものに置き換えられるということです。 (任意の/文字が存在しないので、パターンが一致しない場合、何も起こりません。)

+0

いいえ、私はそれに精通しています、私はPHPで使用していますが、JSで少ないです – Roland

2
var result = /\/([^\/]*)$/.exec(location)[1]; 

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

注:locationはここwindow.location、ではないあなたのvar locationです。

0
var string = "/Roland/index.php"; 
var result = string.substring(0, string.lastIndexOf("/") + 0); 
関連する問題