2016-08-09 26 views
0

Ich will in der Lage sein, die Nutzernamen der Nutzer Facebook-Profile zu erfassen, und ich weiß, das ist super einfach zu tun, wenn die URL wie folgt aussieht:Wenn eine Zeichenfolge nach dem letzten Schrägstrich einer URL vorhanden ist, erfassen Sie den Wert; wenn nicht, erfassen den Wert vor dem letzten Schrägstrich (Javascript)

https://www.facebook.com/123456

Alles, was ich tun müssen, ist dies:

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

Aber wenn die URL wie folgt aussieht:

https://www.facebook.com/123456/

Das obige JS gibt eine leere Zeichenfolge zurück. Wie kann ich also:

  • Der bekommen den Wert nach dem letzten Schrägstrich (/), es sei denn, der Wert leer ist
  • Wenn der Wert leer ist, den Wert vor dem letzten Schrägstrich erhalten

Antwort

3
var result = str.split("/").filter(Boolean).pop(); 
+1

Oh wow, das funktioniert erstaunlich gut. Kannst du erklären, was passiert? –

+1

@LaurenEccles Geteilte Zeichenfolge bei '/' charcaters, wenn das letzte Zeichen in 'str' ist'/',' .split() 'setzt den letzten Index des resultierenden Arrays auf den leeren String' "'' welcher '.filter()' mit Parameter 'Boolean' entfernt aus dem gefilterten Array, als leere Zeichenfolge' "" gibt einen "falsey" -Wert zurück; oder "" "wird bei' .filter() 'als' falsch 'gleichgesetzt. Wenn das letzte Zeichen von 'str' nicht'/'ist, sollte der letzte Index ein Teil der Zeichenkette sein, der auf das letzte'/'Zeichen in der Zeichenkette folgt. '.pop()' gibt den letzten Index eines Arrays zurück und liefert dasselbe Ergebnis, wenn das letzte Zeichen in 'str''/'ist oder nicht'/'. – guest271314